要求
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 "qwertyuiop" 组成。 第二行由字符 "asdfghjkl" 组成。 第三行由字符 "zxcvbnm" 组成。
示例 1:
输入:words = ["Hello","Alaska","Dad","Peace"]
输出:["Alaska","Dad"]
示例 2:
输入:words = ["omk"]
输出:[]
示例 3:
输入:words = ["adsdf","sfd"]
输出:["adsdf","sfd"]
核心代码
class Solution:
def findWords(self, words: List[str]) -> List[str]:
g1 = ["q","w","e","r","t","y","u","i","o","p"]
g2 = ["a","s","d","f","g","h","j","k","l"]
g3 = ["z","x","c","v","b","n","m"]
res = list()
for word in words:
temp = word.lower()
if temp[0] in g1:
flag = 1
elif temp[0] in g2:
flag = 2
elif temp[0] in g3:
flag = 3
temp = set(temp)
for char in temp:
if flag == 1 and char not in g1:
flag = 0
break
if flag == 2 and char not in g2:
flag = 0
break
if flag == 3 and char not in g3:
flag = 0
break
if flag:
res.append(word)
return res
解题思路:简单的循环遍历,设置标志位,当不满足的时候我们的标志位也不会生效,就不会将数据添加到我们的最终结果中。