【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
jewels
和stones
仅由英文字母组成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)
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/131888350