【算法千题案例】每日LeetCode打卡——93.宝石与石头[通俗易懂]

【算法千题案例】每日LeetCode打卡——93.宝石与石头[通俗易懂]算法题打卡:宝石与石头。没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。所以说,树倒了,没有一片雪花是无辜的

大家好,又见面了,我是你们的朋友全栈君。

请添加图片描述


?前言

? 算法题 ?
  • ? 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程?
  • ? 提示:本专栏解题 编程语言一律使用 C# 和 Java 两种进行解题
  • ? 要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧?!
  • ? 今天是力扣算法题持续打卡第93天?!
? 算法题 ?

?原题样例:宝石与石头

给你一个字符串jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。

stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

字母区分大小写,因此 "a""A"是不同类型的石头。

示例1:

输入:jewels = "aA", stones = "aAAbbbb"
输出:3

示例2:

输入:jewels = "z", stones = "ZZ"
输出:0

提示:

  • 1 <= jewels.length, stones.length <= 50
  • jewels 和 stones 仅由英文字母组成
  • jewels 中的所有字符都是 唯一的

?C#方法:Linq解法

从题意中可知J中的元素不重复

所以我们可以直接使用 J 初始化 HashSet

代码:

public class Solution { 
   
public int NumJewelsInStones(string J, string S) { 
   
    ICollection<char> jews = new HashSet<char>();
    foreach (var j in J) { 
   
        jews.Add(j);
    }
    int cnt = 0;
    foreach (var s in S) { 
   
        if (jews.Contains(s)) { 
   
            ++cnt;
        }
    }
    return cnt;
}
}

执行结果

通过
执行用时:76 ms,在所有 C# 提交中击败了31.50%的用户
内存消耗:35.4 MB,在所有 C# 提交中击败了37.65%的用户

?Java 方法:暴力法

思路解析
暴力法的思路很直观,遍历字符串 stones,对于 stones 中的每个字符

遍历一次字符串 jewels,如果其和 jewels 中的某一个字符相同,则是宝石。

代码:

class Solution { 
   
    public int numJewelsInStones(String jewels, String stones) { 
   
        int jewelsCount = 0;
        int jewelsLength = jewels.length(), stonesLength = stones.length();
        for (int i = 0; i < stonesLength; i++) { 
   
            char stone = stones.charAt(i);
            for (int j = 0; j < jewelsLength; j++) { 
   
                char jewel = jewels.charAt(j);
                if (stone == jewel) { 
   
                    jewelsCount++;
                    break;
                }
            }
        }
        return jewelsCount;
    }
}

执行结果

通过
执行用时:0 ms,在所有 Java  提交中击败了100.00%的用户
内存消耗:36.8 MB,在所有 Java 提交中击败了97.40%的用户

复杂度分析

时间复杂度:O( mn )其中 m 是字符串 jewels 的长度,n 是字符串 stones 的长度。
空间复杂度:O(1) 

?总结

  • 今天是力扣算法题打卡的第九十三天!
  • 文章采用 C#Java 两种编程语言进行解题
  • 一些方法也是参考力扣大神写的,也是边学习边分享,再次感谢算法大佬们
  • 那今天的算法题分享到此结束啦,明天再见!
    请添加图片描述
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163840.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 御用导航官方网站提醒提示页_砼讯 | 河海大学官方网站全新改版上线!「建议收藏」

    御用导航官方网站提醒提示页_砼讯 | 河海大学官方网站全新改版上线!「建议收藏」上新了河海河海大学的官方网站上新啦!经过精心的筹备和技术人员不懈努力在105周年校庆来临之际河海大学官方网站全新改版上线!旧版网站全新改版新版网站高端大气的界面设计简洁明晰的板块分布河海元素的多重呈现超大大大图带来绝佳的视觉体验改版后的河海大学官网分为:河海新闻学术活动信息公告光影河海媒体河海五大板块信息门户、邮箱等在网站的右上角校园文化、校园景观、校园服务、图书档案、校历、校车等则在校…

    2022年5月30日
    161
  • 根据连续信道容量的香农公式,当信道带宽B_信道容量的公式

    根据连续信道容量的香农公式,当信道带宽B_信道容量的公式目录信道带宽信道容量香农公式说道通信,从广义上来讲就不得不提到信道容量和信道带宽、以及著名的香农公式。先说说是什么是信道吧,通俗的来讲,信道就是信息传输的通道。信道在通信系统中的位置如下图所示:但是,并不是所有频率的信号都可以通过信道传输,信道的频率响应决定了哪些频率的信号可以通过信道,哪些频率的信号不能通过信道。信道带宽前面说到不是所有的信号都可以通过信道传输。所以我们把可以通过信道传输的信号频率范围大小就是信道的带宽,就像是下面这张图所展示的:从图中可以看出.

    2022年10月11日
    3
  • php服务器环境搭建_php和mysql怎么搭建网站

    php服务器环境搭建_php和mysql怎么搭建网站php环境搭建三、配置php环境1、同样php模块选择也是免安装版,直接解压到自己习惯的文件夹中配置即可,提醒站长在官网上下载的时候也要注意系统和VC环境支持。解压路径如下图:进入php的解压目录,找到php.ini-production或者php.ini-development任意一个,重命名为php.ini;然后将D:\php\ext和D:\php\加入到系统变量的环境变量PATH中,如下图:…

    2022年9月14日
    4
  • rpm 安装冲突「建议收藏」

    rpm 安装冲突「建议收藏」1.要安装的包比已安装的包旧,则采用降级的方式安装 rpm -Uvhkpartx-0.4.9-72.el6.x86_64.rpm –oldpackage 2.安装的包比已安装的包新,则直接升级即可 rpm -Uvhkpartx-0.4.9-72.el6.x86_64.rpm  或者末尾追加 –replacefiles  或  –repl…

    2022年5月5日
    37
  • 《C语言及程序设计》资料——C语言中数学函数

    《C语言及程序设计》资料——C语言中数学函数

    2021年9月3日
    59
  • 阿里云分析数据库_阿里云用的什么数据库

    阿里云分析数据库_阿里云用的什么数据库前言由于工作中应用到了阿里的分析型数据库产品,虽然它类似于mysql,但又有一些区别,通过好好的了解它,才能解决自己的性能优化方面的疑惑。一、定义从官方文档了解到其的定义为:阿里云分析型数据库AnalyticDB(简称ADB),是云端托管的PB级高并发实时数据仓库,是专注于服务OLAP领域的数据仓库。在数据存储模型上,采用关系模型进行数据存储,可以使用SQL进行自由灵活的计算分析,无需预…

    2022年9月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号