You're given strings J representing the types of stones that are jewels, and S representing the stones you have. Each character inS 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".function 1:
Example 1:
Input: J = "aA", S = "aAAbbbb" Output: 3
Example 2:
Input: J = "z", S = "ZZ" Output: 0
Note:
SandJwill consist of letters and have length at most 50.
- The characters in
Jare distinct.
function 1:
First, read J and build jewels hash set.
Second, read S and count jewels.
I used hash set so that the time complexity will be O(M+N), instead of O(MN)
class Solution {
public int numJewelsInStones(String J, String S) {
int sum=0;
HashSet<Character> hs = new HashSet<Character>();
for(char j : J.toCharArray()){
hs.add(j);
}
for(char s : S.toCharArray()){
if(hs.contains(s))
sum++;
}
return sum;
}
}function 2:
Author By StefanPochmann
class Solution {
public int numJewelsInStones(String J, String S) {
//利用正则表达式,把S中非J内容去除,replaceAlll()方法,再返回长度
return S.replaceAll("[^"+J+"]","").length();
}
}
460

被折叠的 条评论
为什么被折叠?



