## 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

• C
• C++
• Java
• Python
• C#
• PHP
• ```#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");
```
```#include
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;
}
```

#### Output

```The two strings are anagram of each other
```

## Recommended Programs

Binary search algorithm & program
Program to check armstrong number