您的位置:首页 > 编程语言 > C语言/C++

leetcode初级算法 —— 1.2 宝石与石头 C++

2019-07-08 13:20 417 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_43697707/article/details/95055006

leetcode初级算法 —— 宝石与石头 C++

欢迎观看本博客

  您好! 这是我第二次在 力扣(leetcode) 上练习算法。如有疏漏与不足之处还请多多指教。

题目详情

  给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
  J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。

实例:

  输入: J = “aA”, S = “aAAbbbb”
  输出: 3

代码:

class Solution {
public:
int numJewelsInStones(string J, string S)
{
int count = 0; 		 //计数器
int index= 0;		 //字符位置
for(auto str : J)
{
while((index= S.find(str)) != -1)
{
S.erase(index, 1);
count ++;
}
}
return count;
}
};

优化代码:

class Solution {
public:
int numJewelsInStones(string J, string S)
{
int count = 0; //计数器
unordered_set <char> strJ;
for(auto j : J) strJ.insert(j);
for(auto s : S) if(strJ.count(s)) count++;
return count;
}
};

总结:
  此次测试题目比较简单,主要考察对语言的掌握,其中用到字符串查找方法find() 与 字符串删除方法erase() 以及 字符串遍历法 for(auro str : J) 注:此方法为C11 中添加。
  新代码中使用关联容器 unordered_set 并使用其中计数方法count()

寄语:
  天行健,君子以自强不息,
  地势坤,君子以厚德载物。
                    ——周文王姬昌 《周易》

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: