1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public class Solution { public List<List<String>> groupAnagrams(String[] strs) { List<List<String>> list = new ArrayList<List<String>>(); Map<String, Integer> map = new HashMap<>(); for(int i=0;i<strs.length;i++) { String current = sortString(strs[i]); Integer index; if((index = map.get(current))==null) { ArrayList<String> list2 = new ArrayList<>(); map.put(current, list.size()); list2.add(strs[i]); list.add(list2); }else { List<String> list2 = list.get(index); list2.add(strs[i]); } } return list; } public String sortString(String str) { char[] cs = str.toCharArray(); Arrays.sort(cs); return Arrays.toString(cs); }
public static void main(String[] args) { String[] input = {"eat","tea", "tan", "ate", "nat", "bat"}; System.out.println(new Solution().groupAnagrams(input)); } }
|