500. Keyboard Row

来源:互联网 发布:美国手机音乐软件 编辑:程序博客网 时间:2024/06/07 06:23

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.
这道题其实就是简单的把字母表分行存入2个set中,利用Insert函数,然后再利用find函数去找是否在第一个字母的set里面。注意这里的字母大小写,因为属于判断类的题,完全可以把字符串复制给一个string再去判断是否在同一行。

代码如下:

class Solution {public:    vector<string> findWords(vector<string>& words) {        set<char>s1;        set<char>s2;        set<char>s3;        s1.insert('q');s1.insert('w');s1.insert('e');s1.insert('r');s1.insert('t');s1.insert('y');s1.insert('u');s1.insert('i');        s1.insert('o');s1.insert('p');        s2.insert('a');        s2.insert('s');        s2.insert('d');        s2.insert('f');        s2.insert('g');        s2.insert('h');        s2.insert('j');        s2.insert('k');        s2.insert('l');        s3.insert('z');        s3.insert('x');        s3.insert('c');        s3.insert('v');        s3.insert('b');        s3.insert('n');        s3.insert('m');        vector<string>c;        for(int i=0;i<words.size();i++){            string word=words[i];            for(int j=0;j<word.size();j++){                if(word[j]>='A'&&word[j]<='Z')                 {                     word[j]+=32;                 }            }            bool fl=true;             int flag=0;            if(s1.find(word[0])!=s1.end()){                flag=1;            }            else if(s2.find(word[0])!=s2.end()){                flag=2;            }            else if(s3.find(word[0])!=s3.end()){                flag=3;            }            for(int j=0;j<word.size();j++){                if(flag==1){                    if(!(s1.find(word[j])!=s1.end())){                        fl=false;                        break;                    }                }                else if(flag==2){                    if(!(s2.find(word[j])!=s2.end())){                        fl=false;                        break;                    }                }                else{                     if(!(s3.find(word[j])!=s3.end())){                        fl=false;                        break;                    }                }            }            if(fl==true){                 c.push_back(words[i]);             }        }        return c;    }};
0 0