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));
}
}