美文网首页
每日一道numJewelsInStone

每日一道numJewelsInStone

作者: Kino_7abb | 来源:发表于2019-01-08 21:23 被阅读0次

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

1.按照暴力解法,(循环S 然后循环J 有相同的字符count++)

public static int numJewelsInStone1(String J ,String S){
        char[] a = S.toCharArray();
        char[] b = J.toCharArray();
        int count = 0 ;
        if(a.length >50){
            return 0;
        }
        for(int i = 0; i <S.length(); i++){
            for(int j =0 ;j < J.length();j++){
                if(b[j] == a[i]){
                    count ++;
                }
            }
        }
        return count;
    }

个人觉得,这种暴力解法很简单,但是效率低 嵌套两次时间复杂度O(n2)leetcode也耗时21ms
可以参考之前的两数之和的解法,利用HashMap 只需要一次循环即可

2.利用hashMap

public static int numJewelsInStone2(String J ,String S){
        char[] a = S.toCharArray();
        char[] b = J.toCharArray();
        int count = 0;
        if(a.length > 50){
            return 0;
        }
        Map<Character,Integer> map = new HashMap<>();
        for(int i = 0; i < J.length(); i ++){
            map.put(b[i],i);
        }

        for(int j = 0; j <S.length(); j++){
          //通过比较键值来确定S里包含J
            if(map.containsKey(a[j])){
                count ++;
            }

        }
        return count;
    }

总结:这是一道很简单的题,我们一般会想到暴力解法,但是效率低 最终在Leetcode比较后者比前者提升9ms


QQ图片20190108212306.png

相关文章

  • 每日一道numJewelsInStone

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

  • 人生不易

    生活对有些人来说是风景,何其旖旎,一道一道;对有些人来说是故事,酸甜苦辣,每日每日。

  • 算法题资源

    算法网站LeetCodeCodewars 个人出题每日一道算法题 每天小胡子哥都会出一道题。到目前为止(2017/...

  • 2019-06-23

    自每日闲时 饮一道粗茶 观己内心时 可:明了,心了,事自了。

  • 道教咒语和体内真气关联!

    惊叹!道教咒语原来和体内真气关联 每日一道 每日辰时为您推送一条道教知识,带你轻叩玄门,领悟玄妙大道! 惊叹!道教...

  • 额娘的告白

    上周日,读初中的儿子给自己的母亲发布一道战书:每日里写随笔一篇,相互传阅,共同成长。如有违约,每日罚写3篇。...

  • 2020-10-08

    【每日一练】 每日精练一道结构化 考试再难也不怕 今日题目:某家长跟张老师谈话时,没有经过张老师的同意录了音,而后...

  • 逸豫可以亡身,所以学习 - 草稿

    简书是我每日清晨的动力 自律是提高自我素养的一道修行 今日 DRAWING AND STILL STUDYING ...

  • 每日一道leetcode-TowSum

    1.每日一道leetcode-TowSum 给定一个整数数组 nums 和一个目标值 target,请你在该数组中...

  • 每日一道leetcode-Resverse

    今天我们刷leetcode第二道整数反转 题目大意就是给定一个int整数如123 ,然后反转,以321数输出,我们...

网友评论

      本文标题:每日一道numJewelsInStone

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