问题描述: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.分析:给出n个字符串,从而判断每个字符串中的字符石头来自美式键盘上的同一行,若来自同一行,返回该string。过程将键盘上的每行字符存储到相应的vector或者数组中,然后循环Input中的每个string,并且循环string中的每个char,从而进行比较。class Solution {public: vector<string> findWords(vector<string>& words) { std::unordered_set <char> row1={'q','w','e','r','t','y','u','i','o','p'}; std::unordered_set <char> row2={'a','s','d','f','g','h','j','k','l'}; std::unordered_set <char> row3={'z','x','c','v','b','n','m'}; vector<string> out; for(auto &elem : words) { bool d1=true,d2=true,d3=true; for(auto &key :elem) { if(d1) { auto re=row1.find(tolower(key)); if(re==row1.end()) d1=false; } if(d2) { auto re=row2.find(tolower(key)); if(re==row2.end()) d2=false; } if(d3) { auto re=row3.find(tolower(key)); if(re==row3.end()) d3=false; } } if(d1||d2||d3) out.push_back(elem); } return out; }};
新闻热点
疑难解答