Solution:
may use a hashmap to label the letters in the same row. Also need to pay attention to the upper or lower letters.
Code:
class Solution { public: vector<string> findWords(vector<string>& words) { vector<string> res; string v1="qwertyuiop", v2="asdfghjkl", v3="zxcvbnm"; unordered_map<char, int> m; for(auto a:v1) m[a]=0; for(auto a:v2) m[a]=1; for(auto a:v3) m[a]=2; for(auto a:words){ if(a.size()){ int t = -1; if(m.find(a.front())!=m.end()) t = m[a.front()]; else t = m[(a.front()+32)]; bool flag = true; for(auto b:a){ if((m.find(b)!=m.end()&&m[b]==t) || (m.find(b+32)!=m.end()&&m[b+32]==t)) continue; else{ flag = false; break; } } if(flag) res.push_back(a); } } return res; } };
No comments :
Post a Comment