首页 > 其他分享 >LeetCode 771. 宝石与石头

LeetCode 771. 宝石与石头

时间:2025-01-20 12:57:33浏览次数:3  
标签:count 字符 771 宝石 jewels 集合 stones LeetCode

在本篇博客中,我们将探讨如何解决 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

总结

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

标签:count,字符,771,宝石,jewels,集合,stones,LeetCode
From: https://blog.csdn.net/makeke123456/article/details/145200635

相关文章

  • leetcode 221. 最大正方形
    题目如下数据范围典型的动态规划题。令f(i,j)为以i,j为右下角左边正方形的最大边长,当且仅当f(i,j)>0(即矩阵(ij)不为’0’)时f(i,j)=min(f(i,j-1),f(i-1,j-1),f(i-1,j))对这个方程不太理解的话借用leetcode官方的图也就是说边长为n的正方形可以由3个......
  • LeetCode栈和队列
    栈和队列LeetCode栈和队列刷题记录基础知识栈线性表,只允许在表的一段进行插入和删除操作,满足先进后出原则栈在python中没有特定的类或库函数,一般通过列表(list)或是collections.deque双端队列来实现liststack=[]stack.append(1)#压栈stack.append(2)print(st......
  • LeetCode:78.子集
    LeetCode:78.子集解题思路要求:1、所有子集;2、没有重复元素。网信2268731有出路、有死路。考虑使用回溯算法。解题步骤用递归模拟出所有情况。8731保证接的数字都是后面的数字。收集所有到达递归终点的情况,并返回。时间复杂度:O(2^N),因为每个元素都有两种可能(存在或不存在)空间复......
  • LeetCode:122.买卖股票的最佳时机II
    LeetCode:122.买卖股票的最佳时机IImathtcg4d..解题思路前提:上帝视角,知道未来的价格。局部最优:见好就收,见差就不动,不做任何长远打算。解题步骤新建一个变量,用来统计总利润。遍历价格数组,如果当前价格比昨天高,就在昨天买,今天卖,否则就不交易。遍历结束后,返回所有利润之和。/**......
  • leetcode11. 盛最多水的容器,双指针法
    leetcode11.盛最多水的容器给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例1:输入:[1......
  • leetcode——三数之和(java)
    给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4]输......
  • LeetCode25.K个一组翻转链表
    题目:给你链表的头节点head,每k个节点一组进行翻转,请你返回修改后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。输入:head=[1,2,3,4,5......
  • LeetCode题练习与总结:下一个更大元素 Ⅲ -- 556
    一、题目描述给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。注意 ,返回的整数应当是一个 32位整数 ,如果存在满足题意的答案,但不是 32位整数 ,同样返回 -1 。示例1:......
  • LeetCode题练习与总结:反转字符串中的单词 Ⅲ -- 557
    一、题目描述给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入:s="Let'stakeLeetCodecontest"输出:"s'teLekatedoCteeLtsetnoc"示例2:输入:s="MrDing"输出:"rMgniD"提示:1<=s.length<=5*10^......
  • python-leetcode-存在重复元素 II
    219.存在重复元素II-力扣(LeetCode)classSolution:defcontainsNearbyDuplicate(self,nums:List[int],k:int)->bool:seen=set()fori,numinenumerate(nums):ifnuminseen:returnTrue......