给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。

    美式键盘 中:

    第一行由字符 “qwertyuiop” 组成。
    第二行由字符 “asdfghjkl” 组成。
    第三行由字符 “zxcvbnm” 组成。
    image.png
    示例 1:

    输入:words = [“Hello”,”Alaska”,”Dad”,”Peace”]
    输出:[“Alaska”,”Dad”]
    示例 2:

    输入:words = [“omk”]
    输出:[]
    示例 3:

    输入:words = [“adsdf”,”sfd”]
    输出:[“adsdf”,”sfd”]

    1. /**
    2. * @param {string[]} words
    3. * @return {string[]}
    4. */
    5. var findWords = function (words) {
    6. const map = {
    7. q: 1, w: 1, e: 1, r: 1, t: 1, y: 1, u: 1, i: 1, o: 1, p: 1,
    8. a: 2, s: 2, d: 2, f: 2, g: 2, h: 2, j: 2, k: 2, l: 2,
    9. z: 3, x: 3, c: 3, v: 3, b: 3, n: 3, m: 3,
    10. }
    11. const res = [];
    12. words.forEach((item) => {
    13. // 通过取第一个再判断后面是否相同
    14. const num = map[item[0].toLowerCase()];
    15. let is = true;
    16. for (let i = 1; i < item.length; i += 1) {
    17. // 与第一个不同则不再第一行
    18. if (map[item[i].toLowerCase()] !== num) {
    19. is = false
    20. break
    21. }
    22. }
    23. if (is) res.push(item)
    24. })
    25. return res;
    26. };

    image.png
    image.png