LeetCode:242 Valid Anagram Java

Given two strings s and t, write a function to determine if t is an anagram of s.

For example,
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.

Note:
You may assume the string contains only lowercase alphabets.

這道題目不難,AP程序如下:

        if(s.equals(t))
            return true;
        if(s==null||t==null||s.length()!=t.length())
            return false;
        int[] num=new int[26];
        for(int i=0;i<s.length();i++){
            num[s.charAt(i)-'a']++;
            num[t.charAt(i)-'a']--;
        }
        for(int i:num ){
            if(i!=0)
                return false;
        }
        return true;

同時,這道題目還有一種其他的解法,使用map來做:

        if(s.equals(t))
            return true;
        if(s==null||t==null||s.length()!=t.length())
            return false;
        HashMap<Character, Integer> sMap=new HashMap<Character,Integer>();
        HashMap<Character, Integer> tMap=new HashMap<Character,Integer>();
        for(int i=0;i<s.length();i++){
            if(sMap.containsKey(s.charAt(i))){
                sMap.put(s.charAt(i),sMap.get(s.charAt(i))+1);
            }else{
                sMap.put(s.charAt(i),1);
            }
            if(tMap.containsKey(t.charAt(i))){
                tMap.put(t.charAt(i),tMap.get(t.charAt(i))+1);
            }else{
                tMap.put(t.charAt(i),1);
            }
        }
        for(Character key:sMap.keySet()){
            if(!tMap.containsKey(key)||!tMap.get(key).equals(sMap.get(key)))
                return false;
        }
        return true;

我想說的是,一定要注意以上程序在最後的地方,比較兩個map中的key,一定要用equals,不能用==,具體參見另一篇博客,明天更新。

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