771.宝石与石头
描述
给定字符串J
代表石头中宝石的类型,和字符串 S
代表你拥有的石头。 S
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J
中的字母不重复,J
和 S
中的所有字符都是字母。字母区分大小写,因此"a"
和"A"
是不同类型的石头。
实例
输入: J = "aA", S = "aAAbbbb"
输出: 3
输入: J = "z", S = "ZZ"
输出: 0
注意
S
和J
最多含有50个字母。J
中的字符不重复。
题解
- 创建长度为52的数组,对应a-z,A-Z
- 遍历J,将其中的每一个字符对应的数组值标为1
- 遍历S,判断每一个字符对应的数组值是否为1(是否属于宝石
public static int numJewelsInStones(String J, String S) {
int counter = 0;
int[] jeweFlag = new int[52];//0-25,a-z;26-51,A-Z
for (int i = 0; i < J.length(); i++) {
char nowChar = J.charAt(i);
if (nowChar < 'a')//...A-Z...a-z...
jeweFlag[nowChar-'A'+26] = 1;
else
jeweFlag[nowChar-'a'] = 1;
}
for (int i = 0; i < S.length(); i++) {
char nowChar = S.charAt(i);
if ((nowChar < 'a') && (jeweFlag[nowChar-'A'+26] == 1))
counter++;
else if ((nowChar > 'Z') && (jeweFlag[nowChar-'a'] == 1))
counter++;
}
return counter;
}