Given two strings  a  and  b  consisting of lowercase characters. The task is to check whether two given strings are an anagram of each ot...

Anagram Solution

 Given two strings and b consisting of lowercase characters. The task is to check whether two given strings are an anagram of each other or not. An anagram of a string is another string that contains the same characters, only the order of characters can be different. For example, “act” and “tac” are an anagram of each other.

Example 1:

Input:
a = geeksforgeeks, b = forgeeksgeeks
Output: YES
Explanation: Both the string have same
characters with same frequency. So, 
both are anagrams.

Example 2:

Input:
a = allergy, b = allergic
Output: NO
Explanation:Characters in both the strings
are not same, so they are not anagrams.

Your Task:
You don't need to read input or print anything.Your task is to complete the function isAnagram() which takes the string a and string b as input parameter and check if the two strings are an anagram of each other. The function returns true if the strings are anagram else it returns false.

Expected Time Complexity: O(|a|+|b|).
Expected Auxiliary Space: O(Number of distinct characters).

Note: |s| represents the length of string s.

Constraints:
1 ≤ |a|,|b| ≤ 105



Solution


 public static boolean isAnagram(String a,String b)
    {
        
        // Your code here
        if(a.length()!= b.length())
			return false;
		
		int[] aa = new int[26];
		
		for(int i=0;i<a.length();i++)
			aa[(int)(a.charAt(i)-'a')]++;
		for(int i=0;i<b.length();i++)
			aa[(int)(b.charAt(i)-'a')]--;
		
		for(int i=0;i<26;i++) 
			if(aa[i]!=0)
				return false;
		return true;
        
    }

0 comments:

Do not spam here.