Skip to content

500. 键盘行 ​

  • 题号:500
  • 来源:LeetCode
  • 难度:简单
  • 标签:字符串 哈希表
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(n*k) 时间 · O(1) 空间 · 更新于 2026-09-27

三个Set判断单词字符是否同一行

typescript
/**
 * @difficulty easy
 * @tags 字符串,哈希表
 * @time O(n*k)
 * @space O(1)
 * @note 三个Set判断单词字符是否同一行
 * @500. 键盘行
 */
let words = ["Hello", "Alaska", "Dad", "Peace"]
let set_1 = new Set(['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'])
let set_2 = new Set(['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'])
let set_3 = new Set(['z', 'x', 'c', 'v', 'b', 'n', 'm'])

let res: string[] = []
for (let i = 0; i < words.length; i++) {
    let word = words[i].toLowerCase()
    let setIndex = 1
    if (set_1.has(word[0])) {
        setIndex = 1
    } else if (set_2.has(word[0])) {
        setIndex = 2
    } else if (set_3.has(word[0])) {
        setIndex = 3
    }

    let set = setIndex === 1 ? set_1 : setIndex === 2 ? set_2 : set_3
    let flag = true
    for (let j = 1; j < word.length; j++) {
        if (!set.has(word[j])) {
            flag = false
            break
        }
    }
    if (flag) {
        res.push(words[i])
    }
}

console.log(res)

源码:ts/leetcode/500. 键盘行.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm