First one using Arrays.sort
public static void main(String[] args) {
String s="schoolmaster";
String s1="theclassroom";
char a[]=s.toCharArray();
Arrays.sort(a);
char a1[]=s1.toCharArray();
Arrays.sort(a1);
System.out.println(Arrays.equals(a, a1));
}
and this one using hashmap
public static void main(String[] args) {
String s="murphee";
String s1="purhmee";
System.out.println(new Anagram().checkAnagram(s, s1));
}
boolean checkAnagram(String s,String s1)
{
if(s.length()!=s1.length())
return false;
Map<Character,Integer> hs= new HashMap<Character,Integer>();
char c[]=s.toCharArray();
for(char cs:c)
{
if(hs.containsKey(cs))
{
hs.put(cs,hs.get(cs)+1);
}
else
hs.put(cs,0);
}
char c1[]=s1.toCharArray();
for(char cs:c1)
{
if(hs.containsKey(cs))
{
if(hs.get(cs)!=0)
hs.put(cs,hs.get(cs)-1);
else
hs.remove(cs);
}
}
if(hs.size()==0)
return true;
else
return false;
}
The implementation of hashmap is calling put and get several times , isnt is slower that Arrays...
Please help me understand how the complexity will work , and if any other better ways to find anagrams