题目描述
给定字符串J
代表石头中宝石的类型,和字符串 S
代表你拥有的石头。 S
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J
中的字母不重复,J
和 S
中的所有字符都是字母。字母区分大小写,因此"a"
和"A"
是不同类型的石头。
示例 1:
输入: J = "aA", S = "aAAbbbb"
输出: 3
示例 2:
输入: J = "z", S = "ZZ"
输出: 0
注意:
S
和J
最多含有50个字母。-
J
中的字符不重复。
解题思路:
最简单的暴力解法,即遍历S字符串中的每个字符,判断此字符是否在字符串J当中,如果存在,则宝石个数加1。
1、将S字符串中的每个字符保存在一个数组当中,Java的String类提供了一个toCharArray方法,该方法可以将一个字符串中的每个字符转成char类型,并保存在一个char数组当中。
2、循环遍历第1步中的char数组的每个元素,看此元素是否存在于J字符串当中,String类提供了一个contains方法,该方法用于判断某个字符串是否包含了另一个字符串,返回值为boolean类型。但是在第1步中的数组类型为char,所以需要用String类的valueOf方法,将char类型的元素转为String类型。
3、在第2步中,如果contains方法返回的值为true,则结果result的值加1,即宝石个数加1,最后result的值为题目的解。
具体代码:
public static int numJewelsInStones(String J, String S) {
int result = 0; // 宝石个数,即最后的结果
char[] arrays = S.toCharArray(); // 将S字符串中的每个字符保存在一个char数组中
for (char value : arrays) { // 循环遍历char数组中的元素
if (J.contains(String.valueOf(value))) { // 判断char数组中的每个元素是否在J字符串当中
result++; // 如果存在,则将结果加1
}
}
return result; // 返回最后的结果
}