leetcode-500-Keyboard Row

来源:互联网 发布:意大利人的性格 知乎 编辑:程序博客网 时间:2024/05/30 04:27

问题

题目:[leetcode-500]

思路

简单题,没什么说的。注意isOnlyOneRow里面常量字符串可以写成static。这样不用反复开辟和销毁。增强生存期。小心一点,找的时候用小写。

代码

class Solution {public:    vector<string> findWords(vector<string>& words) {        std::vector<std::string> ret;        int sz = words.size();        for( int i = 0; i < sz; ++i ){            if( isOnlyOneRow(words[i]) )                ret.push_back(words[i]);        }        return ret;    }private:    bool isOnlyOneRow(const std::string& s){        static const std::string keyBoardRow[] = { "qwertyuiop", "asdfghjkl", "zxcvbnm" };        int sz = s.size();        int rowNum = 0;        for( int i = 0; i < sz; ++i ){            for( int k = 0; k < 3; ++k ){                if( std::find(keyBoardRow[k].begin(), keyBoardRow[k].end(), std::tolower(s[i])) != keyBoardRow[k].end() ){                    if(!i) rowNum = k;                    else{                        if( k != rowNum )                            return false;                    }                }            }        }        return true;    }};
0 0