Leetcode 500 Solution

This article provides solution to leetcode question 500 (keyboard-row)

https://leetcode.com/problems/keyboard-row

Solution

class Solution { public: vector<string> findWords(vector<string>& words) { 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'};
vector<string> res; for (auto word : words) { bool valid = true; int row = 0; for (auto ch : word) { int next_row = 0; if (row1.find(tolower(ch)) != row1.end()) next_row = 1; else if (row2.find(tolower(ch)) != row2.end()) next_row = 2; else if (row3.find(tolower(ch)) != row3.end()) next_row = 3;
if (row != 0 && row != next_row) { valid = false; break; }
row = next_row; }
if (valid) res.push_back(word); }
return res; } };