Por Yuvraj Chandra
Compartilhado
E-mail

Comparar se duas strings de texto são anagramas é uma grande tarefa de resolução de problemas para melhorar as habilidades de programação.

Um anagrama é uma string formada pela reorganização das letras de uma string 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: Let 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:

  1. Compare o comprimento de ambas as cordas.
  2. 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.
  3. Se o comprimento de ambas as cordas for o mesmo, prossiga.
  4. Classifique as duas strings.
  5. Compare as duas strings classificadas.
  6. Se as duas strings classificadas forem iguais, significa que são anagramas uma da outra. Portanto, retorna verdadeiro.
  7. Se ambas as strings classificadas forem diferentes, significa que não são anagramas uma da outra. Portanto, retorna falso.

Relacionado: Como verificar se uma string é um palíndromo

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:

#incluir 
usando namespace std;
bool checkAnagramas (string s1, string s2)
{
int size1 = s1.length ();
int size2 = s2.length ();
// Se o comprimento de ambas as strings não forem iguais,
// significa que eles não podem ser anagramas um do outro.
// Portanto, retorna falso.
if (size1! = size2)
{
retorna falso;
}
sort (s1.begin (), s1.end ());
sort (s2.begin (), s2.end ());
para (int i = 0; i {
if (s1 [i]! = s2 [i])
{
retorna falso;
}
}
return true;
}
int main ()
{
string s1 = "ouvir";
string s2 = "silencioso";
cout << "String 1:" << s1 << endl;
cout << "String 2:" << s2 << endl;
if (verificar anagramas (s1, s2))
{
cout << "Sim, as duas strings são anagramas uma da outra" << endl;
}
outro
{
cout << "Não, as duas strings não são anagramas uma da outra" << endl;
}
string s3 = "Bem-vindo ao MUO";
string s4 = "MUO de boas-vindas";
cout << "String 3:" << s3 << endl;
cout << "String 4:" << s4 << endl;
if (verificar anagramas (s3, s4))
{
cout << "Sim, as duas strings são anagramas uma da outra" << endl;
}
outro
{
cout << "Não, as duas strings não são anagramas uma da outra" << endl;
}
string s5 = "Peter Piper pegou um pedaço de pimenta em conserva";
string s6 = "Um pedaço de pimenta em conserva que Peter Piper escolheu";
cout << "String 5:" << s5 << endl;
cout << "String 6:" << s6 << endl;
if (verificar anagramas (s5, s6))
{
cout << "Sim, as duas strings são anagramas uma da outra" << endl;
}
outro
{
cout << "Não, as duas strings não são anagramas uma da outra" << endl;
}
string s7 = "Ela vende conchas à beira-mar";
string s8 = "conchas à beira-mar";
cout << "String 7:" << s7 << endl;
cout << "String 8:" << s8 << endl;
if (verificar anagramas (s7, s8))
{
cout << "Sim, as duas strings são anagramas uma da outra" << endl;
}
outro
{
cout << "Não, as duas strings não são anagramas uma da outra" << endl;
}
string s9 = "criativo";
string s10 = "reativo";
cout << "String 9:" << s9 << endl;
cout << "String 10:" << s10 << endl;
if (verificar anagramas (s9, s10))
{
cout << "Sim, as duas strings são anagramas uma da outra" << endl;
}
outro
{
cout << "Não, as duas strings não são anagramas uma da outra" << endl;
}
return 0;
}

Saída:

String 1: ouvir
String 2: silencioso
Sim, as duas strings são anagramas uma da outra
String 3: Bem-vindo ao MUO
String 4: MUO de boas-vindas
Sim, as duas strings são anagramas uma da outra
String 5: Peter Piper escolheu um pedaço de pimenta em conserva
String 6: Um bocado de pimentas em conserva que Peter Piper escolheu
Não, as duas strings não são anagramas uma da outra
String 7: Ela vende conchas à beira-mar
String 8: conchas à beira-mar
Não, as duas strings não são anagramas uma da outra
String 9: criativo
String 10: reativo
Sim, as duas strings são anagramas uma da outra

Relacionado: Como contar as ocorrências de um determinado caractere em uma string

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):
tamanho1 = len (s1)
tamanho2 = len (s2)
# Se o comprimento de ambas as cordas não forem iguais,
# significa que eles não podem ser anagramas um do outro.
# Portanto, retorna falso.
se tamanho1! = tamanho2:
retornar 0
s1 = classificado (s1)
s2 = classificado (s2)
para i no intervalo (0, tamanho1):
se s1 [i]! = s2 [i]:
retorna falso
retornar verdadeiro
s1 = "ouvir"
s2 = "silencioso"
print ("String 1:", s1)
print ("String 2:", s2)
if (verificarAnagramas (s1, s2)):
print ("Sim, as duas strings são anagramas uma da outra")
outro:
print ("Não, as duas strings não são anagramas uma da outra")
s3 = "Bem-vindo ao MUO"
s4 = "MUO de boas-vindas"
print ("String 3:", s3)
print ("String 4:", s4)
if (verificarAnagramas (s3, s4)):
print ("Sim, as duas strings são anagramas uma da outra")
outro:
print ("Não, as duas strings não são anagramas uma da outra")
s5 = "Peter Piper pegou um pedaço de pimenta em conserva"
s6 = "Um bocado de pimentas em conserva que Peter Piper escolheu"
print ("String 5:", s5)
print ("String 6:", s6)
if (verificarAnagramas (s5, s6)):
print ("Sim, as duas strings são anagramas uma da outra")
outro:
print ("Não, as duas strings não são anagramas uma da outra")
s7 = "Ela vende conchas à beira-mar"
s8 = "conchas à beira-mar"
print ("String 7:", s7)
print ("String 8:", s8)
if (verificarAnagramas (s7, s8)):
print ("Sim, as duas strings são anagramas uma da outra")
outro:
print ("Não, as duas strings não são anagramas uma da outra")
s9 = "criativo"
s10 = "reativo"
print ("String 9:", s9)
print ("String 10:", s10)
if (verificarAnagramas (s9, s10)):
print ("Sim, as duas strings são anagramas uma da outra")
outro:
print ("Não, as duas strings não são anagramas uma da outra")

Saída:

String 1: ouvir
String 2: silencioso
Sim, as duas strings são anagramas uma da outra
String 3: Bem-vindo ao MUO
String 4: MUO de boas-vindas
Sim, as duas strings são anagramas uma da outra
String 5: Peter Piper escolheu um pedaço de pimenta em conserva
String 6: Um bocado de pimentas em conserva que Peter Piper escolheu
Não, as duas strings não são anagramas uma da outra
String 7: Ela vende conchas à beira-mar
String 8: conchas à beira-mar
Não, as duas strings não são anagramas uma da outra
String 9: criativo
String 10: reativo
Sim, as duas strings são anagramas uma da outra

Relacionado: Como encontrar vogais, consoantes, dígitos e caracteres especiais em uma string

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) {
deixe size1 = s1.length;
deixe size2 = s2.length;
// Se o comprimento de ambas as strings não forem iguais,
// significa que eles não podem ser anagramas um do outro.
// Portanto, retorna falso.
if (size1! = size2)
{
retorna falso;
}
s1.sort ();
s2.sort ();
para (deixe i = 0; i {
if (s1 [i]! = s2 [i])
{
retorna falso;
}
}
return true;
}
var s1 = "ouvir";
var s2 = "silencioso";
document.write ("String 1:" + s1 + "
");
document.write ("String 2:" + s2 + "
");
if (checkAnagrams (s1.split (""), s2.split (""))) {
document.write ("Sim, as duas strings são anagramas uma da outra" + "
");
} outro {
document.write ("Não, as duas strings não são anagramas uma da outra" + "
");
}
var s3 = "Bem-vindo ao MUO";
var s4 = "MUO de boas-vindas";
document.write ("String 3:" + s3 + "
");
document.write ("String 4:" + s4 + "
");
if (checkAnagrams (s3.split (""), s4.split (""))) {
document.write ("Sim, as duas strings são anagramas uma da outra" + "
");
} outro {
document.write ("Não, as duas strings não são anagramas uma da outra" + "
");
}
var s5 = "Peter Piper escolheu um pedaço de pimenta em conserva";
var s6 = "Um pedaço de pimenta em conserva que Peter Piper escolheu";
document.write ("String 5:" + s5 + "
");
document.write ("String 6:" + s6 + "
");
if (checkAnagrams (s5.split (""), s6.split (""))) {
document.write ("Sim, as duas strings são anagramas uma da outra" + "
");
} outro {
document.write ("Não, as duas strings não são anagramas uma da outra" + "
");
}
var s7 = "Ela vende conchas à beira-mar";
var s8 = "conchas à beira-mar";
document.write ("String 7:" + s7 + "
");
document.write ("String 8:" + s8 + "
");
if (checkAnagrams (s7.split (""), s8.split (""))) {
document.write ("Sim, as duas strings são anagramas uma da outra" + "
");
} outro {
document.write ("Não, as duas strings não são anagramas uma da outra" + "
");
}
var s9 = "criativo";
var s10 = "reativo";
document.write ("String 9:" + s9 + "
");
document.write ("String 10:" + s10 + "
");
if (checkAnagrams (s9.split (""), s10.split (""))) {
document.write ("Sim, as duas strings são anagramas uma da outra" + "
");
} outro {
document.write ("Não, as duas strings não são anagramas uma da outra" + "
");
}

Saída:

String 1: ouvir
String 2: silencioso
Sim, as duas strings são anagramas uma da outra
String 3: Bem-vindo ao MUO
String 4: MUO de boas-vindas
Sim, as duas strings são anagramas uma da outra
String 5: Peter Piper escolheu um pedaço de pimenta em conserva
String 6: Um bocado de pimentas em conserva que Peter Piper escolheu
Não, as duas strings não são anagramas uma da outra
String 7: Ela vende conchas à beira-mar
String 8: conchas à beira-mar
Não, as duas strings não são anagramas uma da outra
String 9: criativo
String 10: reativo
Sim, as duas strings são anagramas uma da outra

Relacionado: Como você encontra o valor ASCII de um personagem?

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.

Compartilhado
E-mail
8 aplicativos para ajudá-lo a aprender a codificar para o Dia Internacional do Programador

Quer aprimorar suas habilidades de codificação? Esses aplicativos e sites irão ajudá-lo a aprender a programar em seu próprio ritmo.

Leia a seguir

Tópicos relacionados
  • Programação
  • JavaScript
  • Pitão
  • Programação C
Sobre o autor
Yuvraj Chandra (43 artigos publicados)

Yuvraj é estudante de graduação em Ciência da Computação na Universidade de Delhi, na Índia. Ele é apaixonado por Full Stack Web Development. Quando não está escrevendo, ele está explorando a profundidade de diferentes tecnologias.

Mais de Yuvraj Chandra

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever