|
Answer» For instance, an ARRAY of strings arr is GIVEN. The task is to remove all strings that are anagrams of an earlier string, then print the remaining array in sorted order. - Examples:
Input: arr[] = { “Scaler”, “Lacers”, “Accdemy”, “Academy” }, N = 4
Output: [“Scaler”, “Academy”,]
Explanation: “Listen” and “Silent” are anagrams, so we remove “Silent”. Similarly, “Scaler” and “Lacers” are anagrams, so we remove “Lacers”. - Code Implementation
import java.util.*; class InterviewBit{ // Function to remove the ANAGRAM String static void removeAnagrams(String arr[], int N) { // vector to store the FINAL result Vector ans = NEW Vector(); // A data structure to keep track of previously encountered Strings HashSet found = new HashSet (); for (int i = 0; i < N; i++) { String word = arr[i]; // Sort the characters of the current String word = sort(word); // Check if the current String is not present in the hashmap // Then, push it into the resultant vector and insert it into the hashmap if (!found.contains(word)) { ans.add(arr[i]); found.add(word); } } // Sort the resultant vector of Strings Collections.sort(ans); // Print the required array for (int i = 0; i < ans.size(); ++i) { System.out.print(ans.get(i)+ " "); } } static String sort(String inputString) { // convert input string to char array char tempArray[] = inputString.toCharArray(); // sort tempArray Arrays.sort(tempArray); // return new sorted string return new String(tempArray); } // Driver code public static void main(String[] args) { String arr[]= { "Scaler", "Lacers", "Accdemy", "Academy" }; int N = 4; removeAnagrams(arr, N); } }Scaler Academy
|