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) 编辑 收藏 举报