1.宝石与石头
给定字符串J
代表石头中宝石的类型,和字符串 S
代表你拥有的石头。 S
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J
中的字母不重复,J
和 S
中的所有字符都是字母。字母区分大小写,因此"a"
和"A"
是不同类型的石头。
示例 :
输入: J = "aA", S = "aAAbbbb"
输出: 3
class Solution {
public int numJewelsInStones(String J, String S) {
if (S == null || J == null)
return 0;
Set<Character> set = new HashSet<>();
for (int i = 0; i < J.length(); ++i) {
set.add(J.charAt(i));
}
int ans = 0;
for (int i = 0; i < S.length(); ++i) {
if (set.contains(S.charAt(i))) {
ans++;
}
}
return ans;
}
}
牛批的方法,速度快滴:
class Solution {
public int numJewelsInStones(String J, String S) {
if (J == null || S == null) return 0;
char[] A = J.toCharArray();
char[] B = S.toCharArray();
boolean[] map = new boolean[128];
for(int i = 0; i < A.length; ++i) {
map[A[i]] = true;
}
int cnt = 0;
for (int i = 0; i < B.length; ++i) {
if (map[B[i]]) {
++cnt;
}
}
return cnt;
}
}