题目链接
https://leetcode-cn.com/problems/jewels-and-stones/
解题思路
- 对宝石和石头进行排序;
- 遍历石头,对比宝石和石头的“大小”(在字母表中的位置),如果石头小,则继续,如果相等,则宝石数量加一,继续,如果石头大,则宝石位置加一。
代码
class Solution {
public:
int numJewelsInStones(string jewels, string stones) {
sort(jewels.begin(), jewels.end());
sort(stones.begin(), stones.end());
//cout<<jewels<<" "<<stones<<endl;
int index = 0;
int count = 0;
for(int i = 0; i < stones.size(); ++i)
{
//cout<<"stones["<<i<<"]: "<<stones[i]<<endl;
//cout<<"jewels["<<index<<"]: "<<jewels[index]<<endl;
if(stones[i] == jewels[index])
{
count++;
}
else if(stones[i] > jewels[index]){
index++;
--i;
}
if(index == jewels.size())
{break;}
}
return count;
}
};