题目描述
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。
示例:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
思路分析
- 用keyset记录键盘中的每一行
- 遍历keyset列表中的所有元素,然后依次遍历words中的单词,如果去重后的单词是key的子集的话,说明选中的word是可以用同一行打出的,append进res列表中。
- 利用line进行word的去重,如果不去重,用子集判断的方法就不可行了,这一点要注意。
代码示例
class Solution(object):
def findWords(self, words):
"""
:type words: List[str]
:rtype: List[str]
"""
res = []
keyset = ['qwertyuiop','asdfghjkl','zxcvbnm']
for key in keyset:
for word in words:
line = set(word.lower())
if line.issubset(key):
res.append(word)
return res