500. 键盘行 771. 宝石与石头 简单 find接口的使用
500. 键盘行1
给你一个字符串数组
words
,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。请注意,字符串 不区分大小写,相同字母的大小写形式都被视为在同一行。
美式键盘 中:
- 第一行由字符
"qwertyuiop"
组成。- 第二行由字符
"asdfghjkl"
组成。- 第三行由字符
"zxcvbnm"
组成。
示例 1:
输入:words = ["Hello","Alaska","Dad","Peace"]
输出:["Alaska","Dad"]
解释:
由于不区分大小写,
"a"
和"A"
都在美式键盘的第二行。示例 2:
输入:words = ["omk"]
输出:[]
示例 3:
输入:words = ["adsdf","sfd"]
输出:["adsdf","sfd"]
find接口
static const size_t npos = -1;
class Solution {
public:
int _findnmu(char ch)
{
if(ch >= 'A' && ch <= 'Z')
ch += 32;
string s1 = "qwertyuiop";
string s2 = "asdfghjkl";
string s3 = "zxcvbnm";
if(s1.find(ch) != -1)
return 1;
else if(s2.find(ch) != -1)
return 2;
else
return 3;
return 0;
}
vector<string> findWords(vector<string>& words) {
vector<string> res;
for(int i = 0; i < words.size(); i++)
{
int flag = 1;
int num = _findnmu(words[i][0]);
for(int j = 1; j < words[i].size(); j++)
{
int word = _findnmu(words[i][j]);
if(word != num)
{
flag = 0;// 发现有非同行元素出现
break;
}
}
if(flag)
res.push_back(words[i]);
}
return res;
}
};
771. 宝石与石头
给你一个字符串
jewels
代表石头中宝石的类型,另有一个字符串stones
代表你拥有的石头。stones
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。字母区分大小写,因此
"a"
和"A"
是不同类型的石头。示例 1:
输入:jewels = "aA", stones = "aAAbbbb" 输出:3示例 2:
输入:jewels = "z", stones = "ZZ" 输出:0提示:
1 <= jewels.length, stones.length <= 50
jewels
和stones
仅由英文字母组成jewels
中的所有字符都是 唯一的
class Solution {
public:
int numJewelsInStones(string jewels, string stones) {
int res = 0;
for(auto &e : stones)
{
if(jewels.find(e) != -1)
res++;
}
return res;
}
};