给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
解法一
class Solution {
public int numJewelsInStones(String J, String S) {
char[] j = J.toCharArray();
char[] s = S.toCharArray();
int count = 0;
//遍历每个宝石
for (char c1 : j)
//遍历拥有的石头
for (char c2 : s)
if (c1 == c2) count++;
return count;
}
}
解法二
class Solution {
public int numJewelsInStones(String J, String S) {
char[] j = J.toCharArray();
int before = S.length();
//遍历每个宝石
for (char c : j) {
//如果有当前遍历的宝石的字符,就替换成""
S = S.replace(c + "", "");
}
//相减得出数量
return before - S.length();
}
}
不过用String的API进行替换效率太低,不推荐。