第五个算法-宝石与石头算法
Posted liutian1912
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五个算法-宝石与石头算法相关的知识,希望对你有一定的参考价值。
-
题目
给定字符串
J
代表石头中宝石的类型,和字符串S
代表你拥有的石头。S
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J
中的字母不重复,J
和S
中的所有字符都是字母。字母区分大小写,因此"a"
和"A"
是不同类型的石头。 -
分析
给两个字符串,对比一个字符串在另一个字符串中的数据中重复的个数- 要求:
字母区分大小写
求拥有的总数
- 要求:
-
测试数据
输入:J = "aA", S = "aAAbbbb"
输出:3
输入:J = "z", S = "ZZ"
输出:0 -
参考答案
算法思想:- 先求出S中石头分别重复的个数组成数组
- 遍历数据跟J中的字符对比累加
-
public int numJewelsInStones(String J, String S) {
int count = 0;
Map<String,Integer> map = new HashMap<String,Integer>();
for (int i =0;i<S.length();i++){
String sv = String.valueOf(S.charAt(i));
if(map.containsKey(sv)){
map.put(sv,map.get(sv)+1);
}else{
map.put(sv,1);
}
}
for (int i =0;i<J.length();i++){
char s =J.charAt(i);
count=map.get(String.valueOf(s))==null?0+count:map.get(String.valueOf(s))+count;
}
return count;
}
5,优秀解法
class Solution {
public int numJewelsInStones(String J, String S) {
int result = 0;
char[] s = new char[128];
for (char c : S.toCharArray()) {
s[c]++;
}
for (char j : J.toCharArray()) {
result += s[j];
}
return result;
}
}
以上是关于第五个算法-宝石与石头算法的主要内容,如果未能解决你的问题,请参考以下文章