宝石与石头 | LeetCode刷题笔记

215 阅读2分钟

这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战


相关文章

LeetCode刷题汇总:LeetCode刷题

一、题目描述


宝石与石头

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。

从简单题目开始刷,锻炼自己的思维能力,为面试准备~

二、思路分析


  • 看看题目的示例,我们来理一理这个思路~

  • 示例 1:

    输入: J = "aA", S = "aAAbbbb"
    输出: 3
    
  • 示例2:

    输入: J = "z", S = "ZZ"
    输出: 0
    
  • 题目很简单,我们可以先顺着题目的思路走~

  • 首先确定我们有哪些种类的宝石

  • 然后循环带入对比,如果符合我们的要求,总数加一。

  • 最后返回总数即可!

三、AC 代码


  • 暴力破解法:

    class Solution {
        public int numJewelsInStones(String J, String S) {
            //先确定自有宝石的种类数量
            int len = J.length();
            //定义一个字节数组
            int[] type = new int[256];
            for(int i = 0; i < len; i++){
                type[J.charAt(i)] = 1;
            }
            int ans = 0;
            len = S.length();
            for(int i = 0; i < len; i++){
                ans += type[S.charAt(i)];
            }
            return ans;
        }
    }
    
    • image-20210820173133024.png
    • 暴力美学的魅力~
    • 暴力法的思路很直观,遍历字符串,对于stones 中的每个字符,遍历一次字符串 jewels,如果其和jewels 中的某一个字符相同,则是宝石。

四、总结

  • 解题思路千千万,不管是本办法还好,还是奇思妙想的解法,能解决就是好办法!白猫黑猫能抓老鼠的猫就是好猫!
  • 这里列几个LeetCode的其他大神的解法作为参考!
  • 点击跳转:官方解法
  • 点击跳转:画解算法

**路漫漫其修远兮,吾必将上下求索~ **如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah