1. 程式人生 > >(java)leetcode771 寶石與石頭(Jewels and Stones)

(java)leetcode771 寶石與石頭(Jewels and Stones)

題目描述:

給定字串J 代表石頭中寶石的型別,和字串 S代表你擁有的石頭。 S 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。

J 中的字母不重複,J 和 S中的所有字元都是字母。字母區分大小寫,因此"a""A"是不同型別的石頭。

示例1 :

Input: J = "aA", S = "aAAbbbb"
Output: 3

示例2:

Input: J = "z", S = "ZZ"
Output: 0

注意:

  • S 和 J 最多含有50個字母。
  •  J 中的字元不重複。

解題思路:

迴圈取出字串S中的每一個字元,然後去判斷這個字元是否存在於字串J中,若存在,則統計數加1;

因為寶石型別的值是唯一的,set儲存值也是唯一的,所以這裡先將寶石型別的每一個字元儲存到set中 ,然後去判斷字串S中的字元是否存在於set中。

程式碼實現(java):

class Solution {
    public int numJewelsInStones(String J, String S) {
        //儲存寶石數目  
        int num=0;
        //儲存寶石型別
        Set set = new HashSet();
        //將字串轉成寶字元陣列
        char[] JJ=J.toCharArray();
        for(char c1:JJ){
            set.add(c1);
        }

        char[] SS=S.toCharArray();
        //迴圈判斷擁有的石頭是否是寶石
        for(char c2:SS){
            if(set.contains(c2))
                num++;
        }

        return num;
    }
}

本人才疏學淺,若有錯誤或更好的方法,歡迎在評論中指出,共同進步