leetcode力扣刷题打卡
题目:771. 宝石与石头
描述:给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
字母区分大小写,因此 “a” 和 “A” 是不同类型的石头。
解题思路
1、哈希
2、大小写放在一个数组中,小写字母放在数组前26位,大写字母、放数组后面26位;
原代码##
class Solution {
public:
int numJewelsInStones(string jewels, string stones) {
vector<int> v(52, 0);
int cnt = 0;
for (int i = 0; i < jewels.size(); ++i) {
if ((jewels[i] >= 'a') && (jewels[i] <= 'z')) {
v[jewels[i] - 'a']++;
} else {
v[jewels[i] - 'A' + 26]++;
}
}
for (int j = 0; j < stones.size(); ++j) {
if ((stones[j] >= 'a') && (stones[j] <= 'z')) {
if (v[stones[j] - 'a'] > 0) cnt++;
} else {
if (v[stones[j] - 'A' + 26] > 0) cnt++;
}
}
return cnt;
}
};