题目描述:
给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
字母区分大小写,因此 “a” 和 “A” 是不同类型的石头。
示例:
解题思路①:
将两个字符串分别转换为字符数组,通过双重for循环实现统计
相关代码①:
class Solution {
public int numJewelsInStones(String jewels, String stones) {
int sum=0,j=jewels.length(),s=stones.length();
char[] jewel=new char[j],stone=new char[s];
jewel=jewels.toCharArray();
stone=stones.toCharArray();
for(int i=0;i<s;i++) {
for(int k=0;k<j;k++) {
if(stone[i]==jewel[k]) sum++;
}
}
return sum;
}
}
解题思路②:
将宝石类型字符串转换为HashSet,通过for循环访问HashSet实现统计宝石数量
相关代码②:
class Solution {
public int numJewelsInStones(String jewels, String stones) {
int sum=0;
Set<Character> jewelsSet=new HashSet<Character>();
for(int i=0;i<jewels.length();i++) {
jewelsSet.add(jewels.charAt(i));
}
for(int i=0;i<stones.length();i++) {
if(jewelsSet.contains(stones.charAt(i))) {
sum++;
}
}
return sum;
}
}