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()
寄语:
天行健,君子以自强不息,
地势坤,君子以厚德载物。
——周文王姬昌 《周易》
相关文章推荐
- LeetCode(初级算法)数组篇--旋转数组c++
- LeetCode(初级算法)数组篇--存在重复c++
- LeetCode(初级算法)数组篇--只出现一次的数字c++
- LeetCode(初级算法)数组篇--两个数组的交集II c++
- Leetcode刷题1-771.宝石与石头(C++)
- LeetCode(初级算法)数组篇--加一c++
- LeetCode(初级算法)数组篇--从排序数组中删除重复项c++
- leetcode初级算法字符串4 有效的字母异位词
- Leecode初级算法C++题解(字符串篇)
- [C/C++标准库]_[初级]_[使用算法库函数时需要注意自定义BinaryPredicate和UnaryPredicate]
- LeetCode-初级算法-从排序数组中删除重复项
- LeetCode初级算法-数组-6
- LeetCode-初级算法-两个数组的交集
- LeetCode每日刷题Day1--- 771 宝石与石头
- C++初级算法 2 (primeNum)
- LeetCode探索模块初级算法数组章节python3代码实现
- Leetcode:宝石与石头
- [leetcode]初级算法——字符串
- LeetCode初级算法:旋转图像
- leetcode 初级算法数组8 移动0