WhiZTiM

Clean attempt at keyboard row https://pastebin.com/RQbfEqWZ

May 25th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Solution {
  2.    
  3.     class KeyboardRow {
  4.     public:
  5.         bool exists_in_single_row(std::string str){
  6.             std::transform(str.begin(), str.end(), str.begin(), [](char s){ return std::toupper(s); });
  7.             bool r1 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row1(c); });
  8.             bool r2 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row2(c); });
  9.             bool r3 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row3(c); });
  10.             return r1 || r2 || r3;
  11.         }
  12.        
  13.     private:
  14.        
  15.         bool in_row1(char c)
  16.         { return std::find(std::begin(row1), std::end(row1), c) != std::end(row1); }
  17.        
  18.         bool in_row2(char c)
  19.         { return std::find(std::begin(row2), std::end(row2), c) != std::end(row2); }
  20.        
  21.         bool in_row3(char c)
  22.         { return std::find(std::begin(row3), std::end(row3), c) != std::end(row3); }
  23.        
  24.     private:
  25.         const char row1[10] = {'Q','W','E','R','T','Y','U','I','O','P'};
  26.         const char row2[9] = {'A','S','D','F','G','H','J','K','L'};
  27.         const char row3[7] = {'Z','X','C','V','B','N','M'};
  28.     };
  29.    
  30. public:
  31.     vector<string> findWords(vector<string>& words) {
  32.         KeyboardRow kr;
  33.         std::vector<std::string> result;
  34.        
  35.         std::copy_if(words.begin(), words.end(), std::back_inserter(result),
  36.                     [&kr](const std::string& s){ return kr.exists_in_single_row(s); });
  37.         return result;
  38.     }
  39. };
Add Comment
Please, Sign In to add comment