View difference between Paste ID: WKPF73Q4 and RQbfEqWZ
SHOW: | | - or go back to the newest paste.
1-
#include <iostream>
1+
class Solution {
2-
#include<string>
2+
    
3-
#include<vector>
3+
    class KeyboardRow {
4-
#include<algorithm>
4+
    public:
5-
5+
        bool exists_in_single_row(std::string str){
6-
6+
            std::transform(str.begin(), str.end(), str.begin(), [](char s){ return std::toupper(s); });
7-
class solution{
7+
            bool r1 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row1(c); });
8-
8+
            bool r2 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row2(c); });
9-
9+
            bool r3 = std::all_of(str.begin(), str.end(), [this](char c){ return in_row3(c); });
10
            return r1 || r2 || r3;
11-
11+
12-
    std::vector<std::string>findWords(std::vector<std::string>& words)
12+
        
13-
    {
13+
    private:
14-
14+
        
15-
        char row1[] ={'q','w','e','r','t','y','u','i','o','p','Q','W','E','R','T','Y','U','I','O','P'};
15+
        bool in_row1(char c)
16-
16+
        { return std::find(std::begin(row1), std::end(row1), c) != std::end(row1); }
17-
        char row2[] ={'a','s','d','f','g','h','j','k','l','A','S','D','F','G','H','J','K','L'};
17+
        
18-
18+
        bool in_row2(char c)
19-
        char row3[]={'z','x','c','v','b','n','m','Z','X','C','V','B','N','M'};
19+
        { return std::find(std::begin(row2), std::end(row2), c) != std::end(row2); }
20-
20+
        
21-
        bool result[words.size()+1];
21+
        bool in_row3(char c)
22-
22+
        { return std::find(std::begin(row3), std::end(row3), c) != std::end(row3); }
23-
23+
        
24-
24+
    private:
25-
        // iterate through the words
25+
        const char row1[10] = {'Q','W','E','R','T','Y','U','I','O','P'};
26-
26+
        const char row2[9] = {'A','S','D','F','G','H','J','K','L'};
27-
        for(size_t i =0; i<words.size(); i++)
27+
        const char row3[7] = {'Z','X','C','V','B','N','M'};
28-
        {
28+
    };
29-
            result[i] = true;
29+
    
30-
30+
31-
            char *found;
31+
    vector<string> findWords(vector<string>& words) {
32-
32+
        KeyboardRow kr;
33-
33+
        std::vector<std::string> result;
34-
34+
        
35-
            // search through row1
35+
        std::copy_if(words.begin(), words.end(), std::back_inserter(result),
36-
36+
                    [&kr](const std::string& s){ return kr.exists_in_single_row(s); });
37-
            found = std::find(row1, row1+20, words[i][0]); //if first letter is found in row 1
37+
        return result;
38-
38+
    }
39-
            if(found != row1+20)
39+
};