Question: Write a method to decide if two strings are anagrams or not.
package CareerCup;
public class Anagram
{
public Anagram(){}
public boolean detect(String str1, String str2)
{
if(str1.length()!=str2.length()) return false;
int[] chars = new int[256];
int NumUniqueChar = 0;
int Num=0;
for(int i=0;i<str1.length();i++)
{
int ch = str1.charAt(i);
if(chars[ch]==0) NumUniqueChar++;
chars[ch]++;
}
for(int i=0;i<str2.length();i++)
{
if(chars[str2.charAt(i)]==0) return false;
chars[str2.charAt(i)]--;
if(chars[str2.charAt(i)]==0)
{
Num++;
if(Num==NumUniqueChar)
return i==str2.length()-1;
}
}
return false;
}
public static void main(String[] args)
{
String str1 = "abcdef";
String str2 = "adbgef";
System.out.print(str1+" and "+ str2);
Anagram agr = new Anagram();
if(agr.detect(str1,str2))
System.out.print(" are anagrams!");
else
System.out.print(" are not anagrams!");
System.out.println();
}
}