[LeetCode] 771. 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 Sis 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.

Solution:

大概翻译下,意思是从一堆石头里捡宝石,输出来宝石的个数。也就是说,只要石头S里有符合的宝石J,那么数量+1。

这样思路就清晰了,先把石头中各个元素的数量统计到一个map中,然后把宝石的数量加起来就是我们要的结果。代码如下:

public class Solution {
        public static int numJewelsInStones(String J, String S) {
            HashMap<Character,Integer> map=new HashMap<Character,Integer>();
            int result=0;
            S.chars().forEach(s->{
                if(stones.containsKey((char)s)) {
                    map.put((char)s, map.get((char)s)+1);
                }else {
                    map.put((char)s, 1);
                }
            });
            for(int j=0;j<J.length();j++) {
                char point=J.charAt(j);
                if(map.containsKey(point)) {
                    result+=map.get(point);
                }
            }
            return result;
        }
        public static void main(String[] args) {
            String J="aA";
            String S="aAABBBBB";
            System.out.println(numJewelsInStones(J,S));
        }
    }

转载于:https://www.cnblogs.com/rever/p/9052253.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值