问题
思路
简单题,没什么说的。注意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;
}
};