2023-07-24 LeetCode每日一题(宝石与石头)

2023-07-24每日一题

一、题目编号

复制代码
771. 宝石与石头

二、题目链接

点击跳转到题目位置

三、题目描述

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

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

提示:

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

示例1:

示例2:

四、解题代码

cpp 复制代码
class Solution {
public:
    int numJewelsInStones(string jewels, string stones) {
        int cnt=0;
        int length1 = jewels.size();
        int length2 = stones.size();
        for(int i = 0; i < length2; ++i){
            for(int j = 0; j < length1; ++j){
                if(jewels[j] == stones[i]){
                    ++cnt;
                    break;
                }
            }
        }
    return cnt;
    }
};
cpp 复制代码
class Solution {
    unordered_map<char, int> hash1;
public:
    int numJewelsInStones(string jewels, string stones) {
        int cnt = 0;
        int m = jewels.size();
        int n = stones.size();
        for(int i = 0; i < m; ++i){
            hash1[jewels[i]] = 1;
        }
        for(int i = 0; i < n; ++i){
            if(hash1[stones[i]] == 1){
                ++cnt;
            }
        }
    return cnt;
    }
};

五、解题思路

(1) 方法1:直接暴力枚举,利用两层循环,判断stones中的元素是否出现在jewels数组中,出现了就宝石数量加1,不出现就不加1。

(2) 方法2:先遍历一遍jewels数组,用哈希表记录哪些是宝石。再遍历一遍stones数组,如果哈希表中有标记就宝石加1,不出现就不加1.

相关推荐
jyyyx的算法博客24 分钟前
传球游戏【思维】
算法
FL162386312932 分钟前
关于2026年南昌大学811信号与系统最后一题电路系统解题思路
算法
殷色玫瑰33 分钟前
C++ STL:map 与 set 详解——从底层红黑树到实际应用
c语言·数据结构·c++·算法·visualstudio·rpc
行者全栈架构师39 分钟前
【鸿蒙心迹】鸿蒙网络请求架构实战——@ohos.net.http 到 Axios 封装、拦截器与统一错误处理(HarmonyOS 7.x)
前端·算法·架构
小宋10211 小时前
OpenTelemetry GenAI可观测性实战:串起模型、工具、Token与错误
java·人工智能·算法·贪心算法
嫂子开门我是_我哥1 小时前
青少年抑郁、焦虑、失眠与自杀相关表现的症状联系:一篇网络分析论文所使用的算法深度解读
论文阅读·算法·论文笔记
字节跳动的猫1 小时前
LikeShop 商品评价体系二开:追评、晒图审核与评价标签筛选功能开发
运维·数据结构·数据库
渊鱼L1 小时前
CAD随机颗粒插件2D V2.0 更新说明
算法
Lazionr1 小时前
unordered_map和unordered_set的使用
开发语言·c++·算法
行者全栈架构师1 小时前
从 55% 到 6%:一个快餐营养规划器的算法迭代实录
后端·算法·架构