原题:
Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.
Example:
Input: ["Hello", "Alaska", "Dad", "Peace"] Output: ["Alaska", "Dad"]
判断哪些单词是由同一行键盘上的字母拼成的,没啥说的,用map就行。结果:
Success
Runtime: 0 ms, faster than 100.00% of C++ online submissions for Keyboard Row.
Memory Usage: 8.5 MB, less than 85.71% of C++ online submissions for Keyboard Row.
代码:
class Solution {
public:
vector<string> findWords(vector<string>& words) {
unordered_map<int,int> dict;
string v0="qwertyuiopQWERTYUIOP";
string v1="asdfghjklASDFGHJKL";
string v2="zxcvbnmZXCVBNM";
for(int i=0;i<v0.size();i++){
dict[v0[i]]=0;
}
for(int i=0;i<v1.size();i++){
dict[v1[i]]=1;
}
for(int i=0;i<v2.size();i++){
dict[v2[i]]=-1;
}
vector<string> res;
for(int i=0;i<words.size();i++){
int sign=dict[words[i][0]];
bool samerow=1;
for(int j=1;j<words[i].size();j++){
if(dict[words[i][j]]!=sign){samerow=0;break;}
}
if(samerow){res.push_back(words[i]);}
}
return res;
}
};