Find Resultant Array After Removing Anagrams

Easy
Watch on YouTube ↗

Solution

class Solution {
    public List<String> removeAnagrams(String[] words) {
        
        List<String> ans = new ArrayList<>();

        for(int i=0; i<words.length; i++) {
            // O(nklogk)
            int j = i+1;
            while( j <words.length) {
                if(!isAnagram(words[i], words[j])) {
                    break;
                }
                j++;
            }

            ans.add(words[i]);
            i = j-1; // i+1-1 = i
        }

        return ans;

    }

    boolean isAnagram(String a, String b) {
        // klogk
        char arr1[] = a.toCharArray();
        char arr2[] = b.toCharArray();
        // abba, abab
        //[a, b, b, a] [a, b, a, b]
        // [a,a,b,b] [a,a,b,b]
        //  aabb, aabb

        Arrays.sort(arr1); Arrays.sort(arr2);
        if(String.valueOf(arr1).equals(String.valueOf(arr2))) {
            return true;
        }
        return false;
    }

}







/*
Ex: 1 
["abba","baba","bbaa","cd","cd"]
i = 0, j = i+1
i = j

Ex: 2
   [aa, ba, aa, ba, ca, ac, ad] // Output: [aa, ba, aa, ba, ca, ad ]
i = 0    1  2   3   4   5   6

j = i+1

*/