目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:力扣
描述:
给你一个字符串 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
中的所有字符都是 唯一的
解题思路:
把jewels转换成char类型的set,然后判断stones中的char是否存在即可。
代码:
class Solution771
{
public:
int numJewelsInStones(string jewels, string stones)
{
set<char> jewelsSet;
const char *c = jewels.c_str();
while (*(c) != '\0')
{
char cc = *(c);
jewelsSet.insert(cc);
c++;
}
int num = 0;
const char *stonesChar = stones.c_str();
while (*stonesChar != '\0')
{
if (jewelsSet.find(*(stonesChar)) != jewelsSet.end())
{
num++;
}
stonesChar++;
}
return num;
}
};