LeetCode 0771. 宝石与石头

【LetMeFly】771.宝石与石头

力扣题目链接:https://leetcode.cn/problems/jewels-and-stones/

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

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

 

示例 1:

输入:jewels = "aA", stones = "aAAbbbb"
输出:3

示例 2:

输入:jewels = "z", stones = "ZZ"
输出:0

 

提示:

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

方法一:统计

对于无法直接判断一个字符是否在字符串中出现过的编程语言,可以写一个返回值为布尔类型的函数来实现上述功能。

bool isIn(char c, string& s) {
    for (char _ : s) {
        if (c == _) {
            return true;
        }
    }
    return false;
}

接着,我们只需要遍历stones字符串,并统计在jewels中出现过的字符个数就行了。

  • 时间复杂度 O ( l e n ( j e w e l s ) × l e n ( s t o n e s ) ) O(len(jewels)\times len(stones)) O(len(jewels)×len(stones))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++

class Solution {
private:
    bool isIn(char c, string& s) {
        for (char _ : s) {
            if (c == _) {
                return true;
            }
        }
        return false;
    }
public:
    int numJewelsInStones(string jewels, string stones) {
        int ans = 0;
        for (char stone : stones) {
            ans += isIn(stone, jewels);
        }
        return ans;
    }
};

Python

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        return sum(stone in jewels for stone in stones)
それわ, steins;gate!

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/131888350

你可能感兴趣的:(题解,#,力扣LeetCode,leetcode,算法,题解,字符串)