Problem:
Solution:
判断给定字符串数组中的单词能否有由且仅由某一排键盘上的字母构成。我想到的方法是依次拿每个单词和row1、row2、row3中的字母进行比较判断,循环要嵌套三次,最外层循环表示依次选取的单词,第二层循环表示依次选取的单词中的字母,最里层循环表示一个键盘行中的字母。其中第二层循环要写三个,表示分别和row1、row2、row3进行比较。这里要注意的一点,可以使用word[i][j]表示string数组words中第i单词的第j字母。具体代码如下:
class Solution {
public:
vector<string> findWords(vector<string>& words) {
vector<string> res;
string row1 = "qwertyuiopQWERTYUIOP";
string row2 = "asdfghjklASDFGHJKL";
string row3 = "zxcvbnmZXCVBNM";
bool flag1;
bool flag2;
bool flag3;
int len = words.size();
for (int i = 0;i < len;i++)
{
for(int j = 0;j < words[i].size();j++)
{
flag1 = false;
for (int k = 0;k < row1.size();k++)
{
if (words[i][j] == row1[k]) flag1 = true;
}
if (!flag1) break;
}
if (flag1) res.push_back(words[i]);
for(int j = 0;j < words[i].size();j++)
{
flag2 = false;
for (int k = 0;k < row2.size();k++)
{
if (words[i][j] == row2[k]) flag2 = true;
}
if (!flag2) break;
}
if (flag2) res.push_back(words[i]);
for(int j = 0;j < words[i].size();j++)
{
flag3 = false;
for (int k = 0;k < row3.size();k++)
{
if (words[i][j] == row3[k]) flag3 = true;
}
if (!flag3) break;
}
if (flag3) res.push_back(words[i]);
}
return res;
}
};