Q. Write a program to check whether the two strings anagram of each other or not.
Anagram :- When two strings contain the same characters irrespective of the order of occurrence then such strings are known as Anagram.
For Example :-
String1 = LISTEN
String2 = SILENT
So as we can see that both strings have same characters, only the order of characters is different so this is an Anagram.
Anagram Algorithm
START Step->1 : Define two strings. Step->2 : Check for their lengths. If the lengths are not equal, then strings are not an anagram. Step->3 : Else, convert the string to lower case character to make the comparison easy. Step->4 : Some language allows the strings to provide inbuilt function for sorting of string. If not then convert them to character array for sorting. Step->5 : Sort the array. Step->6 : Finally, check for the equality of content. STOP
Anagram Program
#include <stdio.h> int check_anagram(char [], char []); int main() { char str1[1000]="listen", str2[1000]="silent"; if (check_anagram(str1, str2)) printf("The two strings are anagram of each other.\n"); else printf("The two strings are not anagram of each other\n"); return 0; } int check_anagram(char str1[], char str2[]) { int first[26] = {0}, second[26] = {0}, third=0; // Calculating frequency of characters of the first string while (str1[third] != '\0') { first[str1[third]-'a']++; third++; } third = 0; while (str2[third] != '\0') { second[str2[third]-'a']++; third++; } // Comparing the frequency of characters for (third = 0; third < 26; third++) if (first[third] != second[third]) return 0; return 1; }
#include <bits/stdc++.h> using namespace std; bool anagram(string str1, string str2) { // Get lengths of both strings int len1 = str1.length(); int len2 = str2.length(); // If length of both strings is not same, then they // cannot be anagram if (len1 != len2) return false; // Sort both the strings sort(str1.begin(), str1.end()); sort(str2.begin(), str2.end()); // Compare sorted strings for (int i = 0; i < len1; i++) if (str1[i] != str2[i]) return false; return true; } // Driver code int main() { string str1 = "listen"; string str2 = "silent"; if (anagram(str1, str2)) cout << "The two strings are anagram of each other"; else cout << "The two strings are not anagram of each other"; return 0; }
import java.io.*; import java.util.Arrays; import java.util.Collections; class LFC { static boolean anagram(char[] str1, char[] str2) { // Get lenghts of both strings int len1 = str1.length; int len2 = str2.length; // If length of both strings is not same, // then they cannot be anagram if (len1 != len2) return false; // Sort both strings Arrays.sort(str1); Arrays.sort(str2); // Compare sorted strings for (int i = 0; i < len1; i++) if (str1[i] != str2[i]) return false; return true; } /* Driver program to test to print printDups*/ public static void main(String args[]) { char str1[] = { 'l', 'i', 's', 't', 'e', 'n' }; char str2[] = { 's', 'i', 'l', 'e', 'n', 't' }; if (anagram(str1, str2)) System.out.println("The two strings are" + " anagram of each other"); else System.out.println("The two strings are not" + " anagram of each other"); } }
def anagram(str1, str2): # Get lengths of both strings len1 = len(str1) len2 = len(str2) # If lenght of both strings is not same, then # they cannot be anagram if len1 != len2: return 0 # Sort both strings str1 = sorted(str1) str2 = sorted(str2) # Compare sorted strings for i in range(0, len1): if str1[i] != str2[i]: return 0 return 1 # Driver program to test the above function str1 = "listen" str2 = "silent" if anagram(str1, str2): print ("The two strings are anagram of each other") else: print ("The two strings are not anagram of each other")
using System; public class LFC { public static void Main () { string str1 = "listen"; string str2 = "silent"; char[] ch1 = str1.ToLower().ToCharArray(); char[] ch2 = str2.ToLower().ToCharArray(); Array.Sort(ch1); Array.Sort(ch2); string val1 = new string(ch1); string val2 = new string(ch2); if (val1 == val2) { Console.WriteLine("The two strings are anagram of each other"); } else { Console.WriteLine("The two strings are not anagram of each other"); } } }
function anagram($str1, $str2) { if (count_chars($str1, 1) == count_chars($str2, 1)) return 'The two strings are anagram of each other'; else return 'The two strings are not anagram of each other'; } // Driver code print_r(anagram('listen', 'silent')."\n");
#includeint check_anagram(char [], char []); int main() { char str1[1000]="listen", str2[1000]="silent"; if (check_anagram(str1, str2)) printf("The two strings are anagram of each other\n"); else printf("The two strings are not anagram of each other\n"); return 0; } int check_anagram(char str1[], char str2[]) { int first[26] = {0}, second[26] = {0}, third=0; // Calculating frequency of characters of the first string while (str1[third] != '\0') { first[str1[third]-'a']++; third++; } third = 0; while (str2[third] != '\0') { second[str2[third]-'a']++; third++; } // Comparing the frequency of characters for (third = 0; third < 26; third++) if (first[third] != second[third]) return 0; return 1; }
Output
The two strings are anagram of each other
Recommended Programs
Binary search algorithm & programProgram to check armstrong number