欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode 模拟面试 - 键盘行

程序员文章站 2022-04-27 08:11:18
...

来源:LeetCode模拟面试

LeetCode 模拟面试 - 键盘行

思路:

用到了c++里面string的查找,string查找成功则返回一个小于string.npos的数,否则是大于等于。

用flag记录第一个字母所在的行。若后面的字母没有在s[flag]找到,直接break;

代码:

class Solution {
public:
    vector<string> findWords(vector<string>& words) {
        vector<string>r;
        vector<string>s;
        s.push_back("qwertyuiopQWERTYUIOP");
        s.push_back("asdfghjklASDFGHJKL");
        s.push_back("zxcvbnmZXCVBNM");
        for(int i=0;i<words.size();i++){
            int flag=0 ;
            for(;flag<3;flag++){
                if (s[flag].find(words[i][0]) < s[flag].npos){
                    break;
                }             
            }
            int f=1;
            for(int j=1;j<words[i].size();j++){
                if(s[flag].find(words[i][j]) >= s[flag].npos){
                    f=0;break;
                }
            }
            if(f) r.push_back(words[i]);
        }
        return r;
    }
};