数据结构和算法分析数据结构与算法

Leetcode-771 宝石与石头

2021-10-25  本文已影响0人  itbird01

771. 宝石与石头

解题思路

*解法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;
    }
}
上一篇下一篇

猜你喜欢

热点阅读