Page Contents
What is Anagram ?
Strings are called anagram, if they contains the same characters but on different order e.g. army and mary, stop and pots, etc.
Example – Program to check whether two strings are anagram or not?
public class AnagramCheck { /* * assumes both arguments are not null * @return true, if both String are anagram */ public static boolean isAnagram(String word, String anagram) { word = word.toLowerCase(); anagram = anagram.toLowerCase(); if (word.length() != anagram.length()) { return false; } char[] chars = word.toCharArray(); for (char c : chars) { int index = anagram.indexOf(c); if (index != -1) { anagram = anagram.substring(0, index) + anagram.substring(index + 1, anagram.length()); } else { return false; } } return anagram.isEmpty(); } public static void main(String[] args) { String str1 = "word"; String str2 = "wrdo"; if (isAnagram(str1, str2)) { System.out.println("'" + str1 + "' and '" + str2 + "' is anagram"); } else { System.out.println("'" + str1 + "' and '" + str2 + "' is not anagram"); } // ////////////// String str3 = "SiLeNt CAT"; String str4 = "LisTen AcT"; if (isAnagram(str3, str4)) { System.out.println("'" + str3 + "' and '" + str4 + "' is anagram"); } else { System.out.println("'" + str3 + "' and '" + str4 + "' is not anagram"); } // //////////// String str5 = "Debit Card"; String str6 = "Bad Credit"; if (isAnagram(str5, str6)) { System.out.println("'" + str5 + "' and '" + str6 + "' is anagram"); } else { System.out.println("'" + str5 + "' and '" + str6 + "' is not anagram"); } } }
Output
'word' and 'wrdo' is anagram 'SiLeNt CAT' and 'LisTen AcT' is anagram 'Debit Card' and 'Bad Credit' is anagram
Example -Using Arrays.sort() method
import java.util.Arrays; public class AnagramCheck { /* * Another way to check if two Strings are anagram or not in Java This * method assumes that both word and anagram are not null * @return true, if both Strings are anagram. * sorting is done a/c to asc alphabetical order */ public static boolean isAnagram(String str1, String str2) { str1 = str1.toLowerCase(); str2 = str2.toLowerCase(); char[] charFromstr1 = str1.toCharArray(); char[] charFromstr2 = str2.toCharArray(); Arrays.sort(charFromstr1); Arrays.sort(charFromstr2); return Arrays.equals(charFromstr1, charFromstr2); } public static void main(String[] args) { String str1 = "word"; String str2 = "wrdo"; if (isAnagram(str1, str2)) { System.out.println("'" + str1 + "' and '" + str2 + "' is anagram"); } else { System.out.println("'" + str1 + "' and '" + str2 + "' is not anagram"); } // ////////////// String str3 = "SiLeNt CAT"; String str4 = "LisTen AcT"; if (isAnagram(str3, str4)) { System.out.println("'" + str3 + "' and '" + str4 + "' is anagram"); } else { System.out.println("'" + str3 + "' and '" + str4 + "' is not anagram"); } // //////////// String str5 = "Debit Card"; String str6 = "Bad Credit"; if (isAnagram(str5, str6)) { System.out.println("'" + str5 + "' and '" + str6 + "' is anagram"); } else { System.out.println("'" + str5 + "' and '" + str6 + "' is not anagram"); } } }
Output
'word' and 'wrdo' is anagram 'SiLeNt CAT' and 'LisTen AcT' is anagram 'Debit Card' and 'Bad Credit' is anagram
Example – Using Another way
public class AnagramCheck { public static boolean isAnagram(String str1, String str2) { str1=str1.toLowerCase(); str2=str2.toLowerCase(); char[] char1 = str1.toCharArray(); StringBuilder sbStr2 = new StringBuilder(str2); for (char ch : char1) { int index = sbStr2.indexOf("" + ch); if (index != -1) { sbStr2.deleteCharAt(index); } else { return false; } } return sbStr2.length() == 0 ? true : false; } public static void main(String[] args) { String str1 = "word"; String str2 = "wrdo"; if (isAnagram(str1, str2)) { System.out.println("'" + str1 + "' and '" + str2 + "' is anagram"); } else { System.out.println("'" + str1 + "' and '" + str2 + "' is not anagram"); } // ////////////// String str3 = "SiLeNt CAT"; String str4 = "LisTen AcT"; if (isAnagram(str3, str4)) { System.out.println("'" + str3 + "' and '" + str4 + "' is anagram"); } else { System.out.println("'" + str3 + "' and '" + str4 + "' is not anagram"); } // //////////// String str5 = "Debit Card"; String str6 = "Bad Credi"; if (isAnagram(str5, str6)) { System.out.println("'" + str5 + "' and '" + str6 + "' is anagram"); } else { System.out.println("'" + str5 + "' and '" + str6 + "' is not anagram"); } } }
Output
'word' and 'wrdo' is anagram 'SiLeNt CAT' and 'LisTen AcT' is anagram 'Debit Card' and 'Bad Credi' is not anagram