1. 哈希/映射/散列表
1.1 【中等】字母异位词分组(49)

/** 先排序,再利用hashMap*/public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map = new HashMap<>();for (String str : strs) {char[] array = str.toCharArray();Arrays.sort(array);String key = new String(array);List<String> list = map.getOrDefault(key, new ArrayList<>());list.add(str);map.put(key, list);}return new ArrayList<>(map.values());}
1.1 【简单】有效的字母异位词(242)

第一种排序方法很简单,这边展示Hash解法。
/** 利用hashmap,如果get(t)-1后小于0,说明t的元素不在s中*/public boolean isAnagram(String s, String t) {if (s.length() != t.length()) {return false;}Map<Character, Integer> table = new HashMap<>();for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);table.put(ch, table.getOrDefault(ch, 0) + 1);}for (int i = 0; i < t.length(); i++) {char ch = t.charAt(i);table.put(ch, table.getOrDefault(ch, 0) - 1);if (table.get(ch) < 0) {return false;}}return true;}
