55-Map和Set练习-LeetCode771宝石与石头

题目

给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

字母区分大小写,因此 "a" 和 "A" 是不同类型的石头。

示例 1:

输入:jewels = "aA", stones = "aAAbbbb"
输出:3

示例 2:

输入:jewels = "z", stones = "ZZ"
输出:0

提示:

    1 <= jewels.length, stones.length <= 50
    jewels 和 stones 仅由英文字母组成
    jewels 中的所有字符都是 唯一的


思路

利用Set集合的特性来做。

  • 字符串名.length() ->字符串的长度。
  • 数组名.length -> 数组长度。

charAt()方法返回指定索引位置的char值。

索引范围为0~length() - 1。

如:str.charAt(0)检索str中第一个字符,str.charAt(str.length() - 1)检索最后一个字符。

方法声明:public char charAt(int index)。


代码

class Solution {
    public int numJewelsInStones(String jewels, String stones) {
        //1.将jewels字符串拆分为单个字符,存储到set集合中
        Set jewelSet = new HashSet<>();
        for (int i = 0; i < jewels.length(); i++) {
            jewelSet.add(jewels.charAt(i));
        }

        //2.遍历石头,看其中哪些是宝石
        int ret = 0;
        for (int i = 0; i < stones.length(); i++) {
            if(jewelSet.contains(stones.charAt(i))) {
                ret++;
            }
        }
        return ret;
    }
}

你可能感兴趣的:(Java数据结构,java,数据结构)