兩個字符串中所含的字符相同,及其字符對應出現的次數相同,則這兩個字符串是相等的,例如「aabc」,"caba"是相等的,實現代碼以下: java
package cqu; import java.util.HashMap; import java.util.Map; public class Question1 { /** * 獲取字符串中字符的個數 * * @param s * @return */ public static Map<Character, Integer> getCharMaps(String s) { Map<Character, Integer> map = new HashMap<Character, Integer>(); for (int i = 0; i < s.length(); i++) { Character c = s.charAt(i); Integer count = map.get(c); map.put(c, count == null ? 1 : count + 1); } return map; } /** * 比較兩個map中對應的元素是否相同 * @param ma * @param mb * @return */ public static boolean mapEqual(Map ma,Map mb){ Object[] chma = ma.keySet().toArray(); for (int i = 0; i < chma.length; i++) { if (ma.get(chma[i]).equals(mb.get(chma[i]))) continue; else return false; } return true; } /** * 比較兩個字符串是否相等 * * @param a * @param b * @return */ public static boolean isEqual(String a, String b) { if (a.length() != b.length()) return false; Map<Character, Integer> ma = getCharMaps(a); Map<Character, Integer> mb = getCharMaps(b); return mapEqual(ma,mb); } public static void main(String[] args) { System.out.println(isEqual("abe", "bae")); } }