49.Group Anagrams
题目描述:Given an array of strings, group anagrams together.
For example, given:
["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
题目大意:给定一个sting数组,将字母颠倒后相等的字符串组合到一起,并返回。
思路:hashmap,遍历string数组,将string字符串转化为char数组,对char数组排序,再转化为string字符串,之后在hashmap中判断是否存在当前字符串,如果存在,则将当前string添加到hashmap中,如果不存在则,新建hashmap。
代码:
package String; import java.util.*; /** * @Author OovEver * @Date 2017/12/8 21:53 */ public class LeetCode49 { public List<List<String>> groupAnagrams(String[] strs) { if (strs == null || strs.length == 0) { return new ArrayList<>(); } Map<String, List<String>> map = new HashMap<>(); for (String str : strs) { char[] srtToChar = str.toCharArray(); Arrays.sort(srtToChar); String keyStr = String.valueOf(srtToChar); if (!map.containsKey(keyStr)) { map.put(keyStr, new LinkedList<String>()); } map.get(keyStr).add(str); } return new ArrayList<>(map.values()); } }