500. Keyboard Row
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"]
class Solution { public: vector<string> findWords(vector<string>& words) { vector<string> res; if(words.size() == 0) return res; unordered_set<char> row1 = { 'q','w','e','r','t','y','u','i','o','p' }; unordered_set<char> row2 = { 'a','s','d','f','g','h','j','k','l' }; unordered_set<char> row3 = { 'z','x','c','v','b','n','m' }; bool brow1 = true; bool brow2 = true; bool brow3 = true; 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) res.push_back(elem); } return res; } };