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; }};新闻热点
疑难解答