diff --git a/src/anagram/anagram.java b/src/anagram/anagram.java new file mode 100644 index 0000000..e955cfb --- /dev/null +++ b/src/anagram/anagram.java @@ -0,0 +1,43 @@ + import java.util.*; + public class GroupAnagramTogether { + + public static List> groupAnagrams(String[] strs) { + + List> result = new ArrayList<>(); + + //Initialize hashmap + HashMap> map = new HashMap<>(); + + //Traverse a list of string + for(String str: strs){ + + //Convert to character array + char[] chArr = str.toCharArray(); + //Sort character array + Arrays.sort(chArr); + //Create a string + String key = new String(chArr); + + //Create a key from a sorted string + //if this key is found add new string element + if(map.containsKey(key)){ + map.get(key).add(str); + + } else { + List strList = new ArrayList<>(); + strList.add(str); + map.put(key, strList); + } + } + + result.addAll(map.values()); + return result; + } + + public static void main(String[] args) { + + String[] strs = {"abc", "bca", "elf", "aab", "fle", "cab", "lel", "123", "231", "324"}; + List> result = groupAnagrams(strs); + result.forEach(t -> System.out.println(t + " ")); + } +} diff --git a/src/anagram/problem.md b/src/anagram/problem.md index 2012421..7fa0c5a 100644 --- a/src/anagram/problem.md +++ b/src/anagram/problem.md @@ -27,4 +27,6 @@ Constraints: ``` -*Expected Time Complexity: O(n)* \ No newline at end of file +*Time Complexity: O(n * k) (k is the length of the largest string)* + +*Space Complexity: O(n)*