当前位置: 首页 > article >正文

LeetCode 771. 宝石与石头

在本篇博客中,我们将探讨如何解决 LeetCode 上的第 771 题——宝石与石头。这个问题涉及到字符串的处理和集合的使用,是一个典型的编程问题,适合初学者练习。

解题思路

解决这个问题的关键在于如何高效地检查 stones 中的每个字符是否在 jewels 中。我们可以通过以下步骤来实现:

  1. 使用集合存储宝石类型:首先,将 jewels 中的所有字符存储在一个集合中,这样可以在 O(1) 时间内检查一个字符是否是宝石。

  2. 遍历石头类型:然后,遍历 stones 中的每个字符,检查它是否在宝石集合中。

  3. 计数:如果一个字符是宝石,就增加计数器。

代码实现

 

#include <string>
#include <unordered_set>

class Solution {
public:
    int numJewelsInStones(string jewels, string stones) {
        std::unordered_set<char> jewelSet;
        // 将宝石类型存储在集合中
        for (char c : jewels) {
            jewelSet.insert(c);
        }

        int count = 0;
        // 遍历石头类型,检查是否是宝石
        for (char s : stones) {
            if (jewelSet.count(s)) {
                count++;
            }
        }
        return count;
    }
};

代码解释

  1. 初始化集合:我们首先创建一个 unordered_set 来存储 jewels 中的所有字符。这样可以快速检查一个字符是否存在于集合中。

  2. 遍历石头:然后,我们遍历 stones 中的每个字符,并使用 count 方法检查它是否在宝石集合中。

  3. 计数:如果一个字符是宝石,我们就增加计数器 count

总结

通过使用集合来存储宝石类型,我们可以高效地解决这个问题。这种方法不仅简洁,而且运行效率高,适合处理大量数据。希望这篇博客对你有所帮助!


http://www.kler.cn/a/507477.html

相关文章:

  • HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (二、首页轮播图懒加载的实现)
  • 鸿蒙-点击Notification通知并打开App的具体页面
  • HCIP-VLAN-hybrid接口+DHCP实验
  • lwip单网卡多ip的实现
  • 【Flink系列】4. Flink运行时架构
  • IEC103 转 ModbusTCP 网关
  • STM32 FreeRTOS时间片调度---FreeRTOS任务相关API函数---FreeRTOS时间管理
  • 人工智能领域单词:英文解释
  • LabVIEW串口通信调试与数据接收问题
  • 使用arthas监控诊断java应用
  • vscode accelerate deepspeed配置
  • 强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!
  • 人脸识别SDK(Android)之项目回顾总结
  • 【Ubuntu】如何设置 GRUB 启动器的用户名和密码
  • Unix 与 Linux:操作系统的核心区别
  • 【2024年华为OD机试】(B卷,100分)- 恢复数字序列 (Java JS PythonC/C++)
  • PE文件:节表-添加节
  • 记一次数据库连接 bug
  • RabbitMQ介绍以及基本使用
  • Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集
  • 反转字符串中的单词 II:Swift 实现与详解
  • Qt之登录界面(splash)
  • PCL 计算点云的均值与标准差【2025最新版】
  • ASP.Net Identity + IODC 解析ReturnUrl
  • 【无线感知会议系列-21 】无线感知6G 研究愿景
  • 电气工程中的计算智能