An anagram is a string formed by rearranging the letters of a different string. Checking whether two strings are anagrams of each other might sound difficult, but it's only a little tricky and deceptively straightforward. In this article, you'll learn how to check whether two strings are anagrams of each other using C++, Python, and JavaScript.
Problem Statement
You're given two strings s1 and s2, you need to check whether the two strings are anagrams of each other or not.
Example 1: Let s1 = "creative" and s2 = "reactive".
Since the second string can be formed by rearranging the letters of the first string and vice-versa, thus the two strings are anagrams of each other.
Example 2: Let s1 = "Peter Piper picked a peck of pickled peppers" and s2 = "A peck of pickled peppers Peter Piper picked".
Since the second string can't be formed by rearranging the letters of the first string and vice-versa, thus the two strings aren't anagrams of each other.
Process For Checking if Two Strings Are Anagrams of Each Other
You can follow the approach below to check if the two strings are anagrams of each other:
- Compare the length of both strings.
- If the length of both strings is not the same, it means they can't be anagrams of each other. Thus, return false.
- If the length of both strings is the same, proceed further.
- Sort both strings.
- Compare both sorted strings.
- If both the sorted strings are the same, it means they're anagrams of each other. Thus, return true.
- If both the sorted strings are different, it means they're not anagrams of each other. Thus, return false.
C++ Program to Check If Two Strings Are Anagrams of Each Other
Below is the C++ program to check if two strings are anagrams of each other or not:
#include <bits/stdc++.h>
using namespace std;
bool checkAnagrams(string s1, string s2)
{
int size1 = s1.length();
int size2 = s2.length();
// If the length of both strings are not the same,
// it means they can't be anagrams of each other.
// Thus, return false.
if (size1 != size2)
{
return false;
}
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
for (int i = 0; i < size1; i++)
{
if (s1[i] != s2[i])
{
return false;
}
}
return true;
}
int main()
{
string s1 = "listen";
string s2 = "silent";
cout << "String 1: " << s1 << endl;
cout << "String 2: " << s2 << endl;
if(checkAnagrams(s1, s2))
{
cout << "Yes, the two strings are anagrams of each other" << endl;
}
else
{
cout << "No, the two strings are not anagrams of each other" << endl;
}
string s3 = "Welcome to MUO";
string s4 = "MUO to Welcome";
cout << "String 3: " << s3 << endl;
cout << "String 4: " << s4 << endl;
if(checkAnagrams(s3, s4))
{
cout << "Yes, the two strings are anagrams of each other" << endl;
}
else
{
cout << "No, the two strings are not anagrams of each other" << endl;
}
string s5 = "Peter Piper picked a peck of pickled peppers";
string s6 = "A peck of pickled peppers Peter Piper picked";
cout << "String 5: " << s5 << endl;
cout << "String 6: " << s6 << endl;
if(checkAnagrams(s5, s6))
{
cout << "Yes, the two strings are anagrams of each other" << endl;
}
else
{
cout << "No, the two strings are not anagrams of each other" << endl;
}
string s7 = "She sells seashells by the seashore";
string s8 = "seashells by the seashore";
cout << "String 7: " << s7 << endl;
cout << "String 8: " << s8 << endl;
if(checkAnagrams(s7, s8))
{
cout << "Yes, the two strings are anagrams of each other" << endl;
}
else
{
cout << "No, the two strings are not anagrams of each other" << endl;
}
string s9 = "creative";
string s10 = "reactive";
cout << "String 9: " << s9 << endl;
cout << "String 10: " << s10 << endl;
if(checkAnagrams(s9, s10))
{
cout << "Yes, the two strings are anagrams of each other" << endl;
}
else
{
cout << "No, the two strings are not anagrams of each other" << endl;
}
return 0;
}
Output:
String 1: listen
String 2: silent
Yes, the two strings are anagrams of each other
String 3: Welcome to MUO
String 4: MUO to Welcome
Yes, the two strings are anagrams of each other
String 5: Peter Piper picked a peck of pickled peppers
String 6: A peck of pickled peppers Peter Piper picked
No, the two strings are not anagrams of each other
String 7: She sells seashells by the seashore
String 8: seashells by the seashore
No, the two strings are not anagrams of each other
String 9: creative
String 10: reactive
Yes, the two strings are anagrams of each other
Python Program to Check Whether Two Strings Are Anagrams of Each Other
Below is the Python program to check if two strings are anagrams of each other or not:
def checkAnagrams(s1, s2):
size1 = len(s1)
size2 = len(s2)
# If the length of both strings are not the same,
# it means they can't be anagrams of each other.
# Thus, return false.
if size1 != size2:
return 0
s1 = sorted(s1)
s2 = sorted(s2)
for i in range(0, size1):
if s1[i] != s2[i]:
return False
return True
s1 = "listen"
s2 = "silent"
print("String 1: ", s1)
print("String 2: ", s2)
if(checkAnagrams(s1, s2)):
print("Yes, the two strings are anagrams of each other")
else:
print("No, the two strings are not anagrams of each other")
s3 = "Welcome to MUO"
s4 = "MUO to Welcome"
print("String 3: ", s3)
print("String 4: ", s4)
if(checkAnagrams(s3, s4)):
print("Yes, the two strings are anagrams of each other")
else:
print("No, the two strings are not anagrams of each other")
s5 = "Peter Piper picked a peck of pickled peppers"
s6 = "A peck of pickled peppers Peter Piper picked"
print("String 5: ", s5)
print("String 6: ", s6)
if(checkAnagrams(s5, s6)):
print("Yes, the two strings are anagrams of each other")
else:
print("No, the two strings are not anagrams of each other")
s7 = "She sells seashells by the seashore"
s8 = "seashells by the seashore"
print("String 7: ", s7)
print("String 8: ", s8)
if(checkAnagrams(s7, s8)):
print("Yes, the two strings are anagrams of each other")
else:
print("No, the two strings are not anagrams of each other")
s9 = "creative"
s10 = "reactive"
print("String 9: ", s9)
print("String 10: ", s10)
if(checkAnagrams(s9, s10)):
print("Yes, the two strings are anagrams of each other")
else:
print("No, the two strings are not anagrams of each other")
Output:
String 1: listen
String 2: silent
Yes, the two strings are anagrams of each other
String 3: Welcome to MUO
String 4: MUO to Welcome
Yes, the two strings are anagrams of each other
String 5: Peter Piper picked a peck of pickled peppers
String 6: A peck of pickled peppers Peter Piper picked
No, the two strings are not anagrams of each other
String 7: She sells seashells by the seashore
String 8: seashells by the seashore
No, the two strings are not anagrams of each other
String 9: creative
String 10: reactive
Yes, the two strings are anagrams of each other
Check If Two Strings Are Anagrams of Each Other in JavaScript
Below is the JavaScript program to check if two strings are anagrams of each other or not:
function checkAnagrams(s1, s2) {
let size1 = s1.length;
let size2 = s2.length;
// If the length of both strings are not the same,
// it means they can't be anagrams of each other.
// Thus, return false.
if (size1 != size2)
{
return false;
}
s1.sort();
s2.sort();
for (let i = 0; i < size1; i++)
{
if (s1[i] != s2[i])
{
return false;
}
}
return true;
}
var s1 = "listen";
var s2 = "silent";
document.write("String 1: " + s1 + "<br>");
document.write("String 2: " + s2 + "<br>");
if(checkAnagrams(s1.split(""), s2.split(""))) {
document.write("Yes, the two strings are anagrams of each other" + "<br>");
} else {
document.write("No, the two strings are not anagrams of each other" + "<br>");
}
var s3 = "Welcome to MUO";
var s4 = "MUO to Welcome";
document.write("String 3: " + s3 + "<br>");
document.write("String 4: " + s4 + "<br>");
if(checkAnagrams(s3.split(""), s4.split(""))) {
document.write("Yes, the two strings are anagrams of each other" + "<br>");
} else {
document.write("No, the two strings are not anagrams of each other" + "<br>");
}
var s5 = "Peter Piper picked a peck of pickled peppers";
var s6 = "A peck of pickled peppers Peter Piper picked";
document.write("String 5: " + s5 + "<br>");
document.write("String 6: " + s6 + "<br>");
if(checkAnagrams(s5.split(""), s6.split(""))) {
document.write("Yes, the two strings are anagrams of each other" + "<br>");
} else {
document.write("No, the two strings are not anagrams of each other" + "<br>");
}
var s7 = "She sells seashells by the seashore";
var s8 = "seashells by the seashore";
document.write("String 7: " + s7 + "<br>");
document.write("String 8: " + s8 + "<br>");
if(checkAnagrams(s7.split(""), s8.split(""))) {
document.write("Yes, the two strings are anagrams of each other" + "<br>");
} else {
document.write("No, the two strings are not anagrams of each other" + "<br>");
}
var s9 = "creative";
var s10 = "reactive";
document.write("String 9: " + s9 + "<br>");
document.write("String 10: " + s10 + "<br>");
if(checkAnagrams(s9.split(""), s10.split(""))) {
document.write("Yes, the two strings are anagrams of each other" + "<br>");
} else {
document.write("No, the two strings are not anagrams of each other" + "<br>");
}
Output:
String 1: listen
String 2: silent
Yes, the two strings are anagrams of each other
String 3: Welcome to MUO
String 4: MUO to Welcome
Yes, the two strings are anagrams of each other
String 5: Peter Piper picked a peck of pickled peppers
String 6: A peck of pickled peppers Peter Piper picked
No, the two strings are not anagrams of each other
String 7: She sells seashells by the seashore
String 8: seashells by the seashore
No, the two strings are not anagrams of each other
String 9: creative
String 10: reactive
Yes, the two strings are anagrams of each other
Use the Right Resources to Learn to Code
If you're looking to solidify your coding skills, it's important to learn new concepts and spend time using them. One way to do this is with programming apps, which will help you learn different programming concepts while having fun at the same time.