Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- class KeyboardRow {
- public:
- bool exists_in_single_row(std::string str){
- std::transform(str.begin(), str.end(), str.begin(), [](char s){ return std::toupper(s); });
- bool r1 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row1(c); });
- bool r2 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row2(c); });
- bool r3 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row3(c); });
- return r1 || r2 || r3;
- }
- private:
- bool in_row1(char c)
- { return std::find(std::begin(row1), std::end(row1), c) != std::end(row1); }
- bool in_row2(char c)
- { return std::find(std::begin(row2), std::end(row2), c) != std::end(row2); }
- bool in_row3(char c)
- { return std::find(std::begin(row3), std::end(row3), c) != std::end(row3); }
- private:
- const char row1[10] = {'Q','W','E','R','T','Y','U','I','O','P'};
- const char row2[9] = {'A','S','D','F','G','H','J','K','L'};
- const char row3[7] = {'Z','X','C','V','B','N','M'};
- };
- public:
- vector<string> findWords(vector<string>& words) {
- KeyboardRow kr;
- std::vector<std::string> result;
- std::copy_if(words.begin(), words.end(), std::back_inserter(result),
- [&kr](const std::string& s){ return kr.exists_in_single_row(s); });
- return result;
- }
- };
Add Comment
Please, Sign In to add comment