题目

You’re given strings J representing the types of stones that are jewels, and S representing the stones you have. Each character in S is a type of stone you have. You want to know how many of the stones you have are also jewels.

The letters in J are guaranteed distinct, and all characters in J and S are letters. Letters are case sensitive, so “a” is considered a different type of stone from “A”.

Example 1:

Input: J = "aA", S = "aAAbbbb"
Output: 3


Example 2:

Input: J = "z", S = "ZZ"
Output: 0


Note:

• S and J will consist of letters and have length at most 50. The characters in J are distinct.

用两个boolean[26]数组记录珠宝的种类

代码

class Solution {
public int numJewelsInStones(String J, String S) {
boolean[] upper = new boolean[26];
boolean[] lower = new boolean[26];
for (char c : J.toCharArray()) {
if (Character.isUpperCase(c)) {
upper[c - 'A'] = true;
} else { // lower case
lower[c - 'a'] = true;
}
}
int count = 0;
for (char c : S.toCharArray()) {
if (Character.isUpperCase(c)) {
if (upper[c - 'A']) {
count++;
}
} else if (lower[c - 'a']) {
count++;
}
}
return count;
}
}


用一个boolean[123]数组记录珠宝种类

代码

class Solution {
public int numJewelsInStones(String J, String S) {
boolean[] isJewel = new boolean[123];
int count = 0;
for (char c : J.toCharArray()) {
isJewel[c] = true;
}
for (char c : S.toCharArray()) {
if (isJewel[c]) count++;
}
return count;
}
}