LeetCode 771 宝石与石头
问题描述:
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
哈希表
使用数组代替哈希表对各个字符的数量进行统计
执行用时:1 ms, 在所有 Java 提交中击败了99.67%的用户
内存消耗:37.2 MB, 在所有 Java 提交中击败了60.91%的用户
class Solution {
public int numJewelsInStones(String J, String S) {
if(J==null || J.length()==0 || S==null || S.length()==0) {
return 0;
}
char[] map = new char[52];
for(char ch: S.toCharArray()) {
if(ch-'a'>25 || ch-'a'<0) {
map[ch-'A'+26]++;
}
else {
map[ch-'a']++;
}
}
int ans = 0;
for(char ch: J.toCharArray()) {
if(ch-'a'>25 || ch-'a'<0) {
ans += map[ch-'A'+26];
}
else {
ans += map[ch-'a'];
}
}
return ans;
}
}