给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
注意:
你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。
Python
class Solution(object):
def findWords(self, words):
set1 = set("qwertyuiop")
set2 = set("asdfghjkl")
set3 = set("zxcvbnm")
res = []
for i in words:
x = i.lower()##lower函数,整个字符串直接变小写
setx = set(x)
if setx <= set1 or setx <= set2 or setx <= set3:##如果set是set1,set2或set3的子集,则压入res中
res.append(i)
return res
C++
class Solution {
public:
vector<string> findWords(vector<string>& words) {
vector<string> res;
string s1 = "qwertyuiop";
string s2 = "asdfghjkl";
string s3 = "zxcvbnm";
for(int i = 0; i < words.size(); i++){
int a = 0, b = 0, c = 0;
for(auto x : words[i]){
if(s1.find(tolower(x)) != string::npos) a++;
if(s2.find(tolower(x)) != string::npos) b++;
if(s3.find(tolower(x)) != string::npos) c++;
}
if(words[i].size() == a || words[i].size() == b || c == words[i].size())
res.push_back(words[i]);
}
return res;
}
};