《雜湊表》242. 有效的字母異位詞《leetcode》

Zyy~發表於2020-11-22

242. 有效的字母異位詞

難度簡單305

給定兩個字串 s 和 t ,編寫一個函式來判斷 t 是否是 s 的字母異位詞。

示例 1:

輸入: s = "anagram", t = "nagaram"
輸出: true

示例 2:

輸入: s = "rat", t = "car"
輸出: false

說明:
你可以假設字串只包含小寫字母。

進階:
如果輸入字串包含 unicode 字元怎麼辦?你能否調整你的解法來應對這種情況?

通過次數175,049提交次數277,945

思路解析:

1.時間複雜度O(n)  HashMap;

2.排序比較

AC程式碼1:

class Solution {
    public boolean isAnagram(String s, String t) {
        int n=s.length();
        if(n!=t.length())
            return false;
        HashMap<Character,Integer>mp=new HashMap<Character,Integer>();
        for(int i=0;i<n;i++)
        {
            if(!mp.containsKey(s.charAt(i)))
                mp.put(s.charAt(i),1);
            else
                mp.put(s.charAt(i),mp.get(s.charAt(i))+1);
        }

        for(int i=0;i<n;i++)
        {
            if(!mp.containsKey(t.charAt(i))||mp.get(t.charAt(i))<=0)
                return false;
            else
                mp.put(t.charAt(i),mp.get(t.charAt(i))-1);
        }   
        return true;
    }
}

 

AC程式碼2: 

class Solution {
    public boolean isAnagram(String s, String t) {
        int n=s.length();
        if(n!=t.length())
            return false;
        
        char s1[]=s.toCharArray();
        char t1[]=t.toCharArray();
        Arrays.sort(s1);
        Arrays.sort(t1);

        for(int i=0;i<n;i++)
            if(s1[i]!=t1[i])
                return false;
        
        return true;
    }
}

再提一點: 

Java的HashMap和String的API可以好好複習一下。

 

相關文章