LeetCode771-寶石與石頭(Java)

題目描述:

給定字符串J 代表石頭中寶石的類型,和字符串 S代表你擁有的石頭。 S 中每個字符代表了一種你擁有的石頭的類型,你想知道你擁有的石頭中有多少是寶石。J 中的字母不重複,J 和 S中的所有字符都是字母。字母區分大小寫,因此"a"和"A"是不同類型的石頭。

分析:

    也就是說我們需要從S串中統計包含J串中元素的個數。所以:

 1.先將J(寶石)放進HashMap中,並且一開始元素對應的value(寶石的數量)爲0;

 2.從左向右遍歷串S,如果存在HashMap中的key就更新對應的value(寶石數量);此處的更新利用的是map中put方法去重的特性------>也就是重複插入key相同的鍵值對時,新的value會覆蓋之前所對應的value;

 3.每次更新寶石數量時,統計寶石總數; 

代碼:

class Solution {
    public int numJewelsInStones(String J, String S) {
        //1.將寶石放進map裏邊--->開始默認值都爲0
        Map<Character,Integer> m=new HashMap<>();
        for(int i=0;i<J.length();i++)
        {
            m.put(J.charAt(i),0);
        }

        int count=0;
        //2.依次從前遍歷S的每個字符在map中記錄--->更新石頭中寶石的數量
        for(int j=0;j<S.length();j++)
        {
            Character ch=S.charAt(j);
            if(m.containsKey(ch))//如果是寶石,更新寶石map的數量
            {
                m.put(ch,m.get(ch)+1);
                count++;
            }
        }
        return count;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章