IncredibleThings

导航

LeetCode-Valid Anagram

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.
public class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length() != t.length()){
            return false;
        }
        HashMap<Character, Integer> map=new HashMap<Character, Integer>();
        for(int i=0; i<s.length(); i++){
            char c=s.charAt(i);
            if(map.containsKey(c)){
                int count=map.get(c)+1;
                map.put(c, count);
            }
            else{
                map.put(c,1);
            }
        }
        for(int i=0; i<t.length(); i++){
            char c=t.charAt(i);
            if(map.containsKey(c)){
                int count=map.get(c)-1;
                map.put(c,count);
            }
            else{
                return false;
            }
        }
        for(Character c : map.keySet()){
            if(map.get(c)!=0){
                return false;
            }
        }
        return true;
        
    }
}

 二刷:

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s == null || t == null){
            return false;
        }
        if(s.length() != t.length()){
            return false;
        }
        Map<Character, Integer> map = new HashMap<>();
        for(char c : s.toCharArray()){
            map.put(c, map.getOrDefault(c,0)+1);
        }
        for(char c : t.toCharArray()){
            if(!map.containsKey(c)){
                return false;
            }
            if(map.get(c) -1 == 0){
                map.remove(c);
            }
            else{
                map.put(c, map.get(c)-1);
            }
        }
        return map.isEmpty();
    }
}

 

posted on 2016-06-01 06:10  IncredibleThings  阅读(137)  评论(0编辑  收藏  举报