Skip to content

500. 键盘行

js
;(function () {
  /**
   * 500. 键盘行
   * 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
   * 美式键盘 中:
   * 第一行由字符 "qwertyuiop" 组成。
   * 第二行由字符 "asdfghjkl" 组成。
   * 第三行由字符 "zxcvbnm" 组成。
   *
   * 输入:words = ["Hello","Alaska","Dad","Peace"]
   * 输出:["Alaska","Dad"]
   *
   * 输入:words = ["omk"]
   * 输出:[]
   *
   * 输入:words = ["adsdf","sfd"]
   * 输出:["adsdf","sfd"]
   *
   */

  function findWords(words: string[]): string[] {
    // 方法一:
    const line1 = 'qwertyuiop'
    const line2 = 'asdfghjkl'
    const line3 = 'zxcvbnm'
    const ans = words.filter((item) => {
      let itemArr = item.toLowerCase().split('')
      let indexArr: number[] = []
      for (let i = 0; i < itemArr.length; i++) {
        line1.includes(itemArr[i]) && indexArr.push(1)
        line2.includes(itemArr[i]) && indexArr.push(2)
        line3.includes(itemArr[i]) && indexArr.push(3)
      }
      return [...Array.from(new Set(indexArr))].length === 1
    })
    return ans

    // 方法二:
  }

  const words = ['Hello', 'Alaska', 'Dad', 'Peace']
  const words1 = ['omk']
  const words2 = ['adsdf', 'sfd']
  console.log(findWords(words))
  console.log(findWords(words1))
  console.log(findWords(words2))
})()