码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode -- Valid Anagram

时间:2015-09-05 11:04:24      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

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.

描述:给出两个字符串,判断两者是否相似。主要看两个字符串是否长度相等,是否出现的是同样字符,并且相同字符出现次数相同。

解决:首先判断两个字符是否为空;长度是否相同;长度是否为0;然后用java中HashMap数据结构,首先遍历字符串s,纪录出现过的字符和字符出现的次数,然后遍历字符串t,若出现了s中没有出现过的字符,则直接返回false;若目前字符是在s中出现过的,则只需将map中纪录的value值-1,最后有value不为1者,返回false否则返回true。

Answer:

 public  boolean isAnagram(String s, String t) {
         if(s==null && t==null)
             return true;
         if(s.length() != t.length())
             return false;
         if(s.length()==0 && t.length()==0)
             return true;
         
         HashMap<Character, Integer> map = new HashMap<Character, Integer>();
         for(int i=0; i<s.length(); i++){
                  if(!map.containsKey(s.charAt(i))){
                      map.put(s.charAt(i), 1);
                  } else {
                      int v = map.get(s.charAt(i));
                      map.put(s.charAt(i), v+1);
                  }     
         }
         
         for(int i=0; i<t.length(); i++){
                  if(!map.containsKey(t.charAt(i)))
                      return false;
                  else {
                      int v = map.get(t.charAt(i));
                      map.put(t.charAt(i), v-1);
                  }
         }
         
         Iterator iter = map.entrySet().iterator();
         while(iter.hasNext()){
                 Map.Entry entry = (Map.Entry) iter.next();
                 if((int) entry.getValue() != 0)
                     return false;
         }
         
         return true;
         
     }
    

 

LeetCode -- Valid Anagram

标签:

原文地址:http://www.cnblogs.com/little-YTMM/p/4782885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!