Como verificar se duas strings são anagramas uma da outra
Um anagrama é uma seqüência formada pela reorganização das letras de uma seqüência diferente. Verificar se duas cordas são anagramas uma da outra pode parecer difícil, mas é um pouco complicado e aparentemente simples. Neste artigo, você aprenderá como verificar se duas strings são anagramas uma da outra usando C ++, Python e JavaScript.
Declaração do Problema
São dadas duas strings s1 e s2, você precisa verificar se as duas strings são anagramas uma da outra ou não.
Exemplo 1 : Seja s1 = "criativo" e s2 = "reativo".
Como a segunda string pode ser formada reorganizando as letras da primeira string e vice-versa, as duas strings são anagramas uma da outra.
Exemplo 2 : Seja s1 = "Peter Piper escolheu um pedaço de pimenta em conserva" e s2 = "Um pedaço de pimenta em conserva que Peter Piper escolheu".
Como a segunda string não pode ser formada reorganizando as letras da primeira string e vice-versa, as duas strings não são anagramas uma da outra.
Processo para verificar se duas strings são anagramas uma da outra
Você pode seguir a abordagem abaixo para verificar se as duas strings são anagramas uma da outra:
- Compare o comprimento de ambas as cordas.
- Se o comprimento de ambas as strings não for o mesmo, significa que não podem ser anagramas uma da outra. Portanto, retorna falso.
- Se o comprimento de ambas as cordas for o mesmo, prossiga.
- Classifique as duas strings.
- Compare as duas strings classificadas.
- Se as duas strings classificadas forem iguais, significa que são anagramas uma da outra. Portanto, retorna verdadeiro.
- Se ambas as strings classificadas forem diferentes, significa que não são anagramas uma da outra. Portanto, retorna falso.
Programa C ++ para verificar se duas strings são anagramas uma da outra
Abaixo está o programa C ++ para verificar se duas strings são anagramas uma da outra ou não:
#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;
}
Saída:
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
Programa Python para verificar se duas strings são anagramas uma da outra
Abaixo está o programa Python para verificar se duas strings são anagramas uma da outra ou não:
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")
Saída:
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
Verifique se duas strings são anagramas uma da outra em JavaScript
Abaixo está o programa JavaScript para verificar se duas strings são anagramas uma da outra ou não:
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>");
}
Saída:
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 os recursos certos para aprender a codificar
Se você está procurando solidificar suas habilidades de codificação, é importante aprender novos conceitos e passar algum tempo usando-os. Uma maneira de fazer isso é com aplicativos de programação, que o ajudarão a aprender diferentes conceitos de programação enquanto se diverte ao mesmo tempo.