Leetcode-771 宝石与石头

作者: itbird01 | 来源:发表于2021-10-25 09:20 被阅读0次

    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;
        }
    }
    

    相关文章

      网友评论

        本文标题:Leetcode-771 宝石与石头

        本文链接:https://www.haomeiwen.com/subject/cpenoltx.html