174.Jewels and Stones

题目

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.

思路

问题抽象为:找S中包含有几个J中的字符;
1.取出J中所有不同的字符全部放到set中;
2.遍历S中的字符,如果在map1中则num++;
3.return num

代码

java

public int numJewelsInStones(String J, String S) {
        int num = 0;
        Set<Character> set = new HashSet<Character>(); 
        for (int i = 0; i< J.length(); i++) {
            set.add(J.charAt(i));
        }

        for (int i = 0; i< S.length(); i++) {
            if (set.contains(S.charAt(i))) {
                num++;
            }
        }

        return num;
    }

python

def numJewelsInStones(self, J, S):
        """
        :type J: str
        :type S: str
        :rtype: int
        """
        #定义一个set,存放J中不同的字符
        s1 = set()
        num = 0
        for j in J : 
            s1.add(j)
        for s in S :
            if s in s1 :
                num = num + 1
        return num

C++

 int numJewelsInStones(string J, string S) {
        int num = 0;
        std::set<char> s1;
        for (int i = 0; i < J.size(); i++) {
            s1.insert(J[i]);
        }

        for (int i = 0; i< S.size(); i++) {
            if (s1.find(S[i]) != s1.end()) {
            num++;
            }
        }
    return num;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值