【LeetCode】宝石与石头

给定字符串 J 代表你现在拥有代表宝石的类型,和字符串 S 代表你拥有的石头。S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

J 中的字母不重复,JS 中的所有字符都是字母。字母区分大小写,因此"a""A"是不同类型的石头。


示例1

输入: J = "aA", S = "aAAbbbb"
输出: 3

示例2

输入: J = "z", S = "ZZ"
输出: 0


Python 解答1

def numJewelsInStones(J, S):i = 0for s in S:if s in J:i += 1return i

耗时:44 ms


Python 解答2

def numJewelsInStones(J, S):return sum([s in J for s in S])

耗时:40 ms


C++ 解答

int numJewelsInStones(string J, string S) {int i = 0;for(int j=0; j<J.length(); j++) {for(int s=0; s<S.length(); s++) {if(J[j] == S[s]) i++;}}return i;}

耗时:4ms


心得

本道题的运行耗时,C++很轻松地碾压了Python,快了整整一个量级。其中在编程的过程中,有些点需要注意,以及有些小技巧以后也可以使用:

  1. 在Python中,我们使用 in 可以直接单个字符是否在一个字符串中,其实相当于对字符串使用了 set() 函数转化为list。
  2. Python中对for循环的简写,然后转化为向量形式,可以像Python第二种方法来写。(当然可以用numpy包来直接计算,但是这里不能用)
  3. 在C++中,可以直接定义string,计算string的长度使用.length()
  4. C++句尾加分号加分号加分号!

**题目网址:**https://leetcode-cn.com/problems/jewels-and-stones/description/


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部