码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 771. Jewels and Stones 珠宝和石头

时间:2018-10-23 10:54:24      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:etc   ++   def   hat   字母   char s   red   sel   tin   

You‘re given strings J representing the types of stones that are jewels, and S representing the stones you have.  Each character in S is a type of stone you have.  You want to know how many of the stones you have are also jewels.

The letters in J are guaranteed distinct, and all characters in J and S are letters. Letters are case sensitive, so "a" is considered a different type of stone from "A".

Example 1:

Input: J = "aA", S = "aAAbbbb"
Output: 3

Example 2:

Input: J = "z", S = "ZZ"
Output: 0

Note:

  • S and J will consist of letters and have length at most 50.
  • The characters in J are distinct.

给两个字符串,珠宝字符串J和石头字符串S,其中J中的每个字符都是珠宝,S中的每个字符都是石头,区分字母的大小写,问我们S中有多少个珠宝。

Java:

public int numJewelsInStones(String J, String S) {
    return S.replaceAll("[^" + J + "]", "").length();
}

Java:

public int numJewelsInStones(String J, String S) {
        int res = 0;
        Set setJ = new HashSet();
        for (char j: J.toCharArray()) setJ.add(j);
        for (char s: S.toCharArray()) if (setJ.contains(s)) res++;
        return res;
    } 

Python:

def numJewelsInStones(self, J, S):
    return sum(map(J.count, S))

Python:

def numJewelsInStones(self, J, S):
    return sum(map(S.count, J)) 

Python:  

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

Python:

def numJewelsInStones(self, J, S):
        setJ = set(J)
        return sum(s in setJ for s in S)  

Python:

# Time:  O(m + n)
# Space: O(n)
class Solution(object):
    def numJewelsInStones(self, J, S):
        """
        :type J: str
        :type S: str
        :rtype: int
        """
        lookup = set(J)
        return sum(s in lookup for s in S)  

Python: wo

class Solution(object):
    def numJewelsInStones(self, J, S):
        """
        :type J: str
        :type S: str
        :rtype: int
        """
        res = 0
        for i in S:
            if i in J:
                res += 1
                
        return res 

C++:

int numJewelsInStones(string J, string S) {
        int res = 0;
        unordered_set<char> setJ(J.begin(), J.end());
        for (char s : S) if (setJ.count(s)) res++;
        return res;
    }

  

  

 

[LeetCode] 771. Jewels and Stones 珠宝和石头

标签:etc   ++   def   hat   字母   char s   red   sel   tin   

原文地址:https://www.cnblogs.com/lightwindy/p/9834862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!