Leetcode#771.Jewels and Stones(寶石與石頭)

武培軒發表於2018-08-27

題目描述

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

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

示例 1:

輸入: J = "aA", S = "aAAbbbb"
輸出: 3

示例 2:

輸入: J = "z", S = "ZZ"
輸出: 0

思路

兩兩比較J和S中的字元,若相同則加1。

程式碼實現

package Array;

import java.util.HashSet;
import java.util.Set;

/**
 * 771.Jewels and Stones(寶石與石頭)
 * 給定字串J 代表石頭中寶石的型別,和字串 S代表你擁有的石頭。 S 中每個字元代表了一種你擁有的石頭的型別,你想知道你擁有的石頭中有多少是寶石。
 * J 中的字母不重複,J 和 S中的所有字元都是字母。字母區分大小寫,因此"a"和"A"是不同型別的石頭。
 */
public class Solution771 {
    public static void main(String[] args) {
        Solution771 solution771 = new Solution771();
        String J = "z";
        String S = "ZZ";
        System.out.println(solution771.numJewelsInStones(J, S));
    }

    public int numJewelsInStones(String J, String S) {
        int num = 0;
        int lenJ = J.length();
        int lenS = S.length();
        for (int i = 0; i < lenJ; i++) {
            for (int j = 0; j < lenS; j++) {
                if (S.charAt(j) == J.charAt(i)) {
                    num++;
                }
            }
        }
        return num;
    }

    public int numJewelsInStones_2(String J, String S) {
        int num = 0;
        Set set = new HashSet();
        for (char c : J.toCharArray()) {
            set.add(c);
        }
        for (char s : S.toCharArray()) {
            if (set.contains(s)) {
                num++;
            }
        }
        return num;
    }
}

相關文章