给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意:
你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。
C++
class Solution {
public:
vector<string> findWords(vector<string>& words)
{
vector<char> tmp1={'q','w','e','r','t','y','u','i','o','p','Q','W','E','R','T','Y','U','I','O','P'};
vector<char> tmp2={'a','s','d','f','g','h','j','k','l','A','S','D','F','G','H','J','K','L'};
vector<char> tmp3={'z','x','c','v','b','n','m','Z','X','C','V','B','N','M'};
vector<string> res;
int n=words.size();
for(int i=0;i<n;i++)
{
vector<char> tmp;
char c=words[i][0];
if(find(tmp1.begin(),tmp1.end(),c)!=tmp1.end())
{
tmp=tmp1;
}
if(find(tmp2.begin(),tmp2.end(),c)!=tmp2.end())
{
tmp=tmp2;
}
if(find(tmp3.begin(),tmp3.end(),c)!=tmp3.end())
{
tmp=tmp3;
}
int k;
for(k=1;k<words[i].size();k++)
{
if(find(tmp.begin(),tmp.end(),words[i][k])==tmp.end())
{
break;
}
}
if(k==words[i].size())
{
res.push_back(words[i]);
}
}
return res;
}
};
python
class Solution:
def findWords(self, words):
"""
:type words: List[str]
:rtype: List[str]
"""
tmp1=['q','w','e','r','t','y','u','i','o','p','Q','W','E','R','T','Y','U','I','O','P']
tmp2=['a','s','d','f','g','h','j','k','l','A','S','D','F','G','H','J','K','L']
tmp3=['z','x','c','v','b','n','m','Z','X','C','V','B','N','M']
res=[]
n=len(words)
for i in range(n):
c=words[i][0]
if c in tmp1:
tmp=tmp1
if c in tmp2:
tmp=tmp2
if c in tmp3:
tmp=tmp3
k=1
while k<len(words[i]):
if words[i][k] not in tmp:
break
k+=1
if k==len(words[i]):
res.append(words[i])
return res