771. 宝石与石头
解题思路
- 解法1
1.暴力解法,双层for循环
*解法2
1.哈希表解法,用hashmap存储stones中每个字符,key为每个字符,value为出现的次数
2.遍历J字符串中每个字符,如果字符在hashmap中出现过,则将对应的value统计入结果
两种解法对比
对比.png由于测试用例中,数据量不大,所以对比不太明显
解题遇到的问题
无
后续需要总结学习的知识点
无
##解法1
class Solution {
public int numJewelsInStones(String jewels, String stones) {
if (jewels.length() == 0 || stones.length() == 0) {
return 0;
}
int result = 0;
for (int i = 0; i < jewels.length(); i++) {
for (int j = 0; j < stones.length(); j++) {
if (jewels.charAt(i) == stones.charAt(j)) {
result++;
}
}
}
return result;
}
}
##解法2
class Solution {
public int numJewelsInStones(String jewels, String stones) {
if (jewels.length() == 0 || stones.length() == 0) {
return 0;
}
int result = 0;
//用hashmap存储stones中每个字符,key为每个字符,value为出现的次数
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < stones.length(); i++) {
if (map.containsKey(stones.charAt(i))) {
int index = map.get(stones.charAt(i));
map.put(stones.charAt(i), ++index);
} else {
map.put(stones.charAt(i), 1);
}
}
//遍历J字符串中每个字符,如果字符在hashmap中出现过,则将对应的value统计入结果
for (int i = 0; i < jewels.length(); i++) {
if (map.containsKey(jewels.charAt(i))) {
result += map.get(jewels.charAt(i));
}
}
return result;
}
}
网友评论