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 宝石与石头

    771. 宝石与石头[https://leetcode-cn.com/problems/jewels-and-st...

  • 宝石与石头

    卧室静悄悄的。主人已经睡着了。 突然,一个愤怒的声音响起来:丑八怪,滚开,你怎么配呆在我的身边?! 石头睡得迷迷糊...

  • 宝石与石头

    给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你...

  • 每日一道numJewelsInStone

    今天这道宝石与石头问题,也就是字符串S代表石头,J代表宝石,要在S里找到和J相同的的数量,也就是在石头里找到宝石的...

  • ARTS Week 05

    Algorithm 题目 771. 宝石与石头 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。...

  • LeetCode刷题 771 宝石与石头

    LeetCode刷题 771 宝石与石头 题目 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。...

  • 1、宝石与石头

    1、题目如下:给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的...

  • 宝石与石头问题

    最近开始在LeetCode上学习,记录一下吧。原题: 解决:算法耗时12MS

  • LeetCode题解之宝石与石头

    宝石与石头 题目描述 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种...

  • 771. 宝石与石头

    771. 宝石与石头 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种...

网友评论

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

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