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 1:
Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]
Note:
You may use one character in the keyboard more than once.
You may assume the input string will only contain letters of alphabet.
class Solution {
public:
bool isSame(int pos0, int pos1){
if(pos0 <= 9 && pos1 <= 9) return true;
else if(9 < pos0 && pos0 <= 18 && 9 < pos1 && pos1 <= 18) return true;
else if(18 < pos0 && pos0 <= 25 && 18 < pos1 && pos1 <= 25) return true;
else return false;
}
vector<string> findWords(vector<string>& words) {
string mode = "qwertyuiopasdfghjklzxcvbnm";
int first = 9, second = 18, third = 25;
vector<string> v;
for(int i = 0; i < words.size(); ++i){
string str = words[i];
int j = 1, len = str.length();
for(; j < len; ++j){
int pos0 = mode.find(tolower(str[j - 1]), 0);
int pos1 = mode.find(tolower(str[j]), 0);
if(!isSame(pos0, pos1))
break;
}
if(j == len)
v.push_back(str);
}
return v;
}
};