Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
给你一个字符串 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 中的所有字符都是 唯一的
二、思路分析:
最简单的思路,遍历石头,检查石头是不是宝石。 宝石存成char[],石头存成List,以便把已经判断为宝石的石头从石头中拿出,减少循环比较的次数。 同时别忘了在拿出宝石的同时下标前移一位。
三、AC 代码:
public int NumJewelsInStones(string J, string S) {
char[] charJ = J.ToCharArray();
List<char> charS = S.ToList<char>();
int result = 0;
for (int i = 0; i < charJ.Count(); i++)
{
for (int j = 0; j < charS.Count(); j++)
{
if (charJ[i] == charS[j])
{
result++;
charS.Remove(charS[j]);
j--;
}
}
}
return result;
}
四、总结:
哈希法更优其实。