【Leetcode】771. Jewels and Stones

(找了leetcode上最简单的一个题来找一下存在感)

You're given strings J representing the types of stones that are jewels, and S representing the stones you have.  Each character in S is a type of stone you have.  You want to know how many of the stones you have are also jewels.

The letters in J are guaranteed distinct, and all characters in J and S are letters. Letters are case sensitive, so "a" is considered a different type of stone from "A".

Example 1:

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

Example 2:

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


Tips:J
为不同的字符组成的字符串,从S中找出包含J中字符的总数。
解法一 两重for循环判断字符是否相同。19ms
public int numJewelsInStones(String J, String S) {
        int num = 0;
        for (int i = 0; i < S.length(); i++) {
            for (int j = 0; j < J.length(); j++) {
                if (S.charAt(i) == J.charAt(j)) {
                    num++;
                }
            }
        }
        return num;
    }

解法二:

只循环S 判断J中是否包含,当前的S中的字符 39ms

public int numJewelsInStones2(String J, String S) {
        int num = 0;
        for (int i = 0; i < S.length(); i++) {
            char c = S.charAt(i);
            if (J.indexOf(c) != -1) {
                System.out.println(c);
                num++;
            }
        }
        return num;
    }

 但是啊,反而是两层for循环快一些呢!


posted @ 2018-02-05 17:43  于淼  阅读(460)  评论(2编辑  收藏  举报