自学内容网 自学内容网

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

总结

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


原文地址:https://blog.csdn.net/makeke123456/article/details/145200635

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!