LeetCode - 771. Jewels and Stones

topic

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

Note:

S and J will consist of letters and have length at most 50.
The characters in J are distinct.

Conventional thinking

The title may be a bit around, in fact, to simplify it, that there are two strings Jand S, two strings are composed of letters, and is case sensitive, but Jin the letter is not repeated, Sit is possible to duplicate. Please find out Sthere how many letters are in the Jsame letter.

The idea is very simple, is to walk Sin each character exists in the Jmiddle, on each there is a cumulative time. code show as below:

class Solution {
    public int numJewelsInStones(String J, String S) {
        int count = 0;
        for (int i = 0; i < S.length(); i++) {
            if (J.indexOf(S.charAt(i)) >= 0)
                count++;
        }
        return count;
    }
}

Another way

In discussing the district saw a very Sao practice, only one line of code can get the desired results, as follows:

class Solution {
    public int numJewelsInStones(String J, String S) {
        return S.replaceAll("[^" + J + "]", "").length();
    }
}

This idea is the use of regular expressions, the Sinside who do not belong to the Jcharacter to replace all the empty string ""length, and then the rest of the string is the final answer.

As these two ideas matter of opinion which is better, here are two ideas each time and memory it takes:

Conventional ideas:

Runtime: 1 ms
Memory Usage: 33.7 MB

Special ideas:

Runtime: 7 ms
Memory Usage: 34.9 MB

Related Links

Guess you like

Origin www.cnblogs.com/yulinlewis/p/10990740.html