771.宝石与石头

【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 中的所有字符都是 唯一的

方法一:统计

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

1
2
3
4
5
6
7
8
bool isIn(char c, string& s) {
for (char _ : s) {
if (c == _) {
return true;
}
}
return false;
}

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

  • 时间复杂度$O(len(jewels)\times len(stones))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

1
2
3
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


771.宝石与石头
https://blog.letmefly.xyz/2023/07/24/LeetCode 0771.宝石与石头/
作者
Tisfy
发布于
2023年7月24日
许可协议