标签:
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; }
标签:
原文地址:http://www.cnblogs.com/little-YTMM/p/4782885.html