package com.interview.string; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class PrintAnagramTogether { public void print(String[] string){ Map<String,List<Integer>> invertedIndex = new HashMap<String,List<Integer>>(); int index = 0; for(String str : string){ char [] charArray = str.toCharArray(); Arrays.sort(charArray); String newString = new String(charArray); if(invertedIndex.containsKey(newString)){ List<Integer> pos = invertedIndex.get(newString); pos.add(index); }else{ List<Integer> pos = new ArrayList<Integer>(); pos.add(index); invertedIndex.put(newString, pos); } index++; } for(List<Integer> result : invertedIndex.values()){ for(Integer i : result){ System.out.println(string[i]); } } } public static void main(String args[]){ String str[] = {"cat","dog","tac","god","act"}; PrintAnagramTogether pat = new PrintAnagramTogether(); pat.print(str); } }