@[TOC]( )

请添加图片描述


📢前言

<table><td bgcolor=76eec6 > 🚀 算法题 🚀 </table>

  • 🌲<font color=#ee4000 size=4> 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程😜</font>
  • 🌲<font color=#eec900 size=4> 提示:本专栏解题 编程语言一律使用 C# 和 Java 两种进行解题</font>
  • 🌲<font color=#43cd80 size=4> 要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧🧐!</font>
  • 🌲 <font color=#d15fee size=4> 今天是力扣算法题持续打卡第93天🎈!</font>

<table><td bgcolor=76eec6 > 🚀 算法题 🚀 </table>


🌲原题样例:宝石与石头

给你一个字符串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) 

💬总结

  • <font color=#db7093 size=4>今天是力扣算法题打卡的第九十三天!</font>
  • <font color=#ee7942 size=4>文章采用 C#Java 两种编程语言进行解题</font>
  • <font color=#76eec6 size=4>一些方法也是参考力扣大神写的,也是边学习边分享,再次感谢算法大佬们</font>
  • <font color=#cd00cd size=4>那今天的算法题分享到此结束啦,明天再见!</font>
    请添加图片描述