📌  相关文章
📜  打印给定数组中的所有字符串,这些字符串可以使用QWERTY键盘的单行中的键进行键入(1)

📅  最后修改于: 2023-12-03 14:54:30.095000             🧑  作者: Mango

题目

给定一个包含多个字符串的数组,打印出所有可以使用QWERTY键盘的单行中的键进行键入的字符串。

思路

我们可以使用键盘布局来判断一个字符串是否可以使用单行键进行输入。具体来说,我们可以维护三个集合分别存储第一行、第二行和第三行中的所有字符。然后遍历数组中的字符串,对于每个字符串,我们只需要判断其中的所有字符是否都属于同一行即可。

代码
def findWords(words):
    """
    :type words: List[str]
    :rtype: List[str]
    """
    row1 = set('qwertyuiop')
    row2 = set('asdfghjkl')
    row3 = set('zxcvbnm')
    res = []
    for word in words:
        w = set(word.lower())
        if w.issubset(row1) or w.issubset(row2) or w.issubset(row3):
            res.append(word)
    return res

复杂度分析
  • 时间复杂度:$O(nk)$,其中 $n$ 是数组中字符串的数量,$k$ 是字符串的平均长度。最坏情况下,我们需要遍历每个字符串中的所有字符。
  • 空间复杂度:$O(1)$,因为我们使用了固定大小的数组,大小不会随着输入的大小而改变。在该问题中,我们可以将空间复杂度视为常数级别的。