题目
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
思路
按行将键盘上的三行字母放入三个列表中去,将每个单词与这个三个列表逐一比对,如果某一单词所有字符全在某一列表当中,那么将这个单词加入结果集。
代码示例
class Solution:
def findWords(self, words: List[str]) -> List[str]:
strs=[]#初始化结果集
#生成比对表
list1=['q','w','e','r','t','y','u','i','o','p']
list2=['a','s','d','f','g','h','j','k','l']
list3=['z','x','c','v','b','n','m']
#遍历待筛选单词的集合
for i in words:
#调用compare()方法
if self.compare(i.lower(),list1) or self.compare(i.lower(),list2) or self.compare(i.lower(),list3):
strs.append(i)
return strs
def compare(self,word,lists):
"""
word[str]:待比对单词
lists[list]:比照表
"""
word=list(word)
for i in word:
if i in lists:
continue
else:
return False
return True
力扣报告
22/22 cases passed (24 ms)
Your runtime beats 96.89 % of python3 submissions
Your memory usage beats 32.16 % of python3 submissions (13.5 MB)