By Yuvraj Chandra
Udział
E-mail

Porównywanie, czy dwa ciągi tekstowe są anagramami, to świetne zadanie rozwiązywania problemów, które poprawia umiejętności programowania.

Anagram to ciąg utworzony przez zmianę kolejności liter innego ciągu. Sprawdzenie, czy dwie struny są anagramami siebie nawzajem, może wydawać się trudne, ale jest to tylko trochę trudne i zwodniczo proste. W tym artykule dowiesz się, jak sprawdzić, czy dwa łańcuchy są anagramami siebie w C++, Pythonie i JavaScript.

Stwierdzenie problemu

Masz dwa ciągi s1 i s2, musisz sprawdzić, czy te dwa ciągi są anagramami siebie, czy nie.

Przykład 1: Niech s1 = "kreatywny" i s2 = "reaktywny".

Ponieważ drugi ciąg może być utworzony przez przestawienie liter pierwszego ciągu i na odwrót, zatem oba ciągi są anagramami siebie nawzajem.

Przykład 2: Niech s1 = "Peter Piper zerwał dziobanie marynowanej papryki" i s2 = "Peter Piper zerwał dziobanie marynowanej papryki".

Ponieważ drugi ciąg nie może być utworzony przez zmianę kolejności liter pierwszego ciągu i odwrotnie, zatem te dwa ciągi nie są anagramami siebie nawzajem.

instagram viewer

Proces sprawdzania, czy dwa ciągi są anagramami siebie nawzajem

Możesz zastosować poniższe podejście, aby sprawdzić, czy te dwa ciągi są anagramami siebie nawzajem:

  1. Porównaj długość obu ciągów.
  2. Jeśli długość obu ciągów nie jest taka sama, oznacza to, że nie mogą być anagramami siebie nawzajem. W ten sposób zwróć fałszywe.
  3. Jeśli długość obu ciągów jest taka sama, przejdź dalej.
  4. Posortuj oba ciągi.
  5. Porównaj oba posortowane ciągi.
  6. Jeśli oba posortowane ciągi są takie same, oznacza to, że są anagramami siebie nawzajem. W ten sposób zwróć prawdę.
  7. Jeśli oba posortowane ciągi są różne, oznacza to, że nie są anagramami siebie nawzajem. W ten sposób zwróć fałszywe.

Związane z: Jak sprawdzić, czy struna jest palindromem?

Program C++ do sprawdzania, czy dwa ciągi znaków są anagramami siebie nawzajem

Poniżej znajduje się program C++, który sprawdza, czy dwa łańcuchy są anagramami siebie nawzajem, czy nie:

#zawierać 
używając standardowej przestrzeni nazw;
bool checkAnagramy (ciąg s1, ciąg s2)
{
int rozmiar1 = s1.długość();
int rozmiar2 = s2.długość();
// Jeśli długość obu ciągów nie jest taka sama,
// to znaczy, że nie mogą być anagramami siebie nawzajem.
// Zatem zwróć false.
jeśli (rozmiar1 !=rozmiar2)
{
zwróć fałsz;
}
sortuj (s1.begin(), s1.end());
sortuj (s2.begin(), s2.end());
dla (int i = 0; i < rozmiar1; i++)
{
jeśli (s1[i] != s2[i])
{
zwróć fałsz;
}
}
zwróć prawdę;
}
int main()
{
ciąg s1 = "słuchaj";
ciąg s2 = "cichy";
cout << "Ciąg 1: " << s1 << endl;
cout << "Ciąg 2: " << s2 << endl;
if (sprawdźAnagramy (s1, s2))
{
cout << "Tak, dwa łańcuchy są anagramami siebie nawzajem" << endl;
}
w przeciwnym razie
{
cout << "Nie, te dwa łańcuchy nie są anagramami siebie nawzajem" << endl;
}
string s3 = "Witamy w MUO";
string s4 = "MUO do powitania";
cout << "Ciąg 3: " << s3 << endl;
cout << "Ciąg 4: " << s4 << endl;
if (sprawdźAnagramy (s3, s4))
{
cout << "Tak, dwa łańcuchy są anagramami siebie nawzajem" << endl;
}
w przeciwnym razie
{
cout << "Nie, te dwa łańcuchy nie są anagramami siebie nawzajem" << endl;
}
string s5 = "Peter Piper zebrał dziobek marynowanej papryki";
string s6 = "Cofanie marynowanej papryki zerwanej przez Petera Pipera";
cout << "Ciąg 5: " << s5 << endl;
cout << "Ciąg 6: " << s6 << endl;
if (sprawdźAnagramy (s5, s6))
{
cout << "Tak, dwa łańcuchy są anagramami siebie nawzajem" << endl;
}
w przeciwnym razie
{
cout << "Nie, te dwa łańcuchy nie są anagramami siebie nawzajem" << endl;
}
string s7 = "Ona sprzedaje muszle nad brzegiem morza";
string s8 = "muszle nad brzegiem morza";
cout << "Ciąg 7: " << s7 << endl;
cout << "Ciąg 8: " << s8 << endl;
if (sprawdźAnagramy (s7, s8))
{
cout << "Tak, dwa łańcuchy są anagramami siebie nawzajem" << endl;
}
w przeciwnym razie
{
cout << "Nie, te dwa łańcuchy nie są anagramami siebie nawzajem" << endl;
}
ciąg s9 = "kreatywny";
ciąg s10 = "reaktywny";
cout << "Ciąg 9: " << s9 << endl;
cout << "Ciąg 10: " << s10 << endl;
if (sprawdźAnagramy (s9, s10))
{
cout << "Tak, dwa łańcuchy są anagramami siebie nawzajem" << endl;
}
w przeciwnym razie
{
cout << "Nie, te dwa łańcuchy nie są anagramami siebie nawzajem" << endl;
}
zwróć 0;
}

Wyjście:

Ciąg 1: słuchaj
Ciąg 2: cichy
Tak, te dwie struny są anagramami siebie nawzajem
Ciąg 3: Witamy w MUO
Ciąg 4: MUO na powitanie
Tak, te dwie struny są anagramami siebie nawzajem
Ciąg 5: Peter Piper zerwał dziobanie marynowanej papryki
Ciąg 6: Cokół marynowanej papryki zerwał Peter Piper
Nie, te dwa ciągi nie są anagramami siebie nawzajem
Ciąg 7: Sprzedaje muszle nad brzegiem morza
Ciąg 8: muszle nad brzegiem morza
Nie, te dwa ciągi nie są anagramami siebie nawzajem
Ciąg 9: kreatywny
Ciąg 10: reaktywny
Tak, te dwie struny są anagramami siebie nawzajem

Związane z: Jak policzyć wystąpienia danego znaku w ciągu?

Program Pythona do sprawdzania, czy dwa ciągi są anagramami siebie nawzajem

Poniżej znajduje się program Pythona do sprawdzania, czy dwa łańcuchy są anagramami siebie nawzajem, czy nie:

def checkAnagramy (s1, s2):
rozmiar1 = długość (s1)
rozmiar2 = długość (s2)
# Jeśli długość obu ciągów nie jest taka sama,
# oznacza to, że nie mogą być anagramami siebie nawzajem.
# W ten sposób zwróć false.
jeśli rozmiar1 != rozmiar2:
powrót 0
s1 = posortowane (s1)
s2 = posortowane (s2)
dla i w zakresie (0, rozmiar 1):
jeśli s1[i] != s2[i]:
powrót Fałsz
zwróć Prawda
s1 = "słuchaj"
s2 = "cichy"
print("Ciąg 1: ", s1)
print("Ciąg 2: ", s2)
if (sprawdźAnagramy (s1, s2)):
print("Tak, te dwa łańcuchy są anagramami siebie")
w przeciwnym razie:
print("Nie, te dwa łańcuchy nie są anagramami siebie")
s3 = "Witamy w MUO"
s4 = "MUO do powitania"
print("Ciąg 3: ", s3)
print("Ciąg 4: ", s4)
if (sprawdźAnagramy (s3, s4)):
print("Tak, te dwa łańcuchy są anagramami siebie")
w przeciwnym razie:
print("Nie, te dwa łańcuchy nie są anagramami siebie")
s5 = "Peter Piper wybrał dziobek marynowanej papryki"
s6 = "Cofanie marynowanej papryki, którą wybrał Peter Piper"
print("Ciąg 5: ", s5)
print("Ciąg 6: ", s6)
if (sprawdźAnagramy (s5, s6)):
print("Tak, te dwa łańcuchy są anagramami siebie")
w przeciwnym razie:
print("Nie, te dwa łańcuchy nie są anagramami siebie")
s7 = "Ona sprzedaje muszle nad brzegiem morza"
s8 = "muszle nad brzegiem morza"
print("Ciąg 7: ", s7)
print("Ciąg 8: ", s8)
if (sprawdźAnagramy (s7, s8)):
print("Tak, te dwa łańcuchy są anagramami siebie")
w przeciwnym razie:
print("Nie, te dwa łańcuchy nie są anagramami siebie")
s9 = "kreatywny"
s10 = "reaktywny"
print("Ciąg 9: ", s9)
print("Ciąg 10: ", s10)
if (sprawdźAnagramy (s9, s10)):
print("Tak, te dwa łańcuchy są anagramami siebie")
w przeciwnym razie:
print("Nie, te dwa łańcuchy nie są anagramami siebie")

Wyjście:

Ciąg 1: słuchaj
Ciąg 2: cichy
Tak, te dwie struny są anagramami siebie nawzajem
Ciąg 3: Witamy w MUO
Ciąg 4: MUO na powitanie
Tak, te dwie struny są anagramami siebie nawzajem
Ciąg 5: Peter Piper zerwał dziobanie marynowanej papryki
Ciąg 6: Cokół marynowanej papryki zerwał Peter Piper
Nie, te dwa ciągi nie są anagramami siebie nawzajem
Ciąg 7: Sprzedaje muszle nad brzegiem morza
Ciąg 8: muszle nad brzegiem morza
Nie, te dwa ciągi nie są anagramami siebie nawzajem
Ciąg 9: kreatywny
Ciąg 10: reaktywny
Tak, te dwie struny są anagramami siebie nawzajem

Związane z: Jak znaleźć samogłoski, spółgłoski, cyfry i znaki specjalne w ciągu?

Sprawdź, czy dwa ciągi znaków są anagramami siebie nawzajem w JavaScript

Poniżej znajduje się program JavaScript, który sprawdza, czy dwa łańcuchy są anagramami siebie nawzajem, czy nie:

kontrola funkcjiAnagramy (s1, s2) {
niech rozmiar1 = s1.długość;
niech rozmiar2 = s2.długość;
// Jeśli długość obu ciągów nie jest taka sama,
// to znaczy, że nie mogą być anagramami siebie nawzajem.
// Zatem zwróć false.
jeśli (rozmiar1 !=rozmiar2)
{
zwróć fałsz;
}
s1.sort();
s2.sortuj();
dla (niech i = 0; i < rozmiar1; i++)
{
jeśli (s1[i] != s2[i])
{
zwróć fałsz;
}
}
zwróć prawdę;
}
var s1 = "słuchaj";
var s2 = "cichy";
document.write("Ciąg 1: " + s1 + "
");
document.write("Ciąg 2: " + s2 + "
");
if (checkAnagrams (s1.split(""), s2.split("))) {
document.write("Tak, dwa ciągi są anagramami siebie nawzajem" + "
");
} w przeciwnym razie {
document.write("Nie, te dwa ciągi nie są anagramami siebie nawzajem" + "
");
}
var s3 = "Witamy w MUO";
var s4 = "MUO do powitania";
document.write("Ciąg 3: " + s3 + "
");
document.write("Ciąg 4: " + s4 + "
");
if (checkAnagrams (s3.split(""), s4.split("))) {
document.write("Tak, dwa ciągi są anagramami siebie nawzajem" + "
");
} w przeciwnym razie {
document.write("Nie, te dwa ciągi nie są anagramami siebie nawzajem" + "
");
}
var s5 = "Peter Piper zerwał dziobek marynowanej papryki";
var s6 = "Czołonek marynowanej papryki zerwany przez Petera Pipera";
document.write("Ciąg 5: " + s5 + "
");
document.write("Ciąg 6: " + s6 + "
");
if (checkAnagrams (s5.split(""), s6.split("))) {
document.write("Tak, dwa ciągi są anagramami siebie nawzajem" + "
");
} w przeciwnym razie {
document.write("Nie, te dwa ciągi nie są anagramami siebie nawzajem" + "
");
}
var s7 = "Ona sprzedaje muszle nad brzegiem morza";
var s8 = "muszle nad brzegiem morza";
document.write("Ciąg 7: " + s7 + "
");
document.write("Ciąg 8: " + s8 + "
");
if (checkAnagrams (s7.split(""), s8.split("))) {
document.write("Tak, dwa ciągi są anagramami siebie nawzajem" + "
");
} w przeciwnym razie {
document.write("Nie, te dwa ciągi nie są anagramami siebie nawzajem" + "
");
}
var s9 = "kreatywny";
var s10 = "reaktywny";
document.write("Ciąg 9: " + s9 + "
");
document.write("Ciąg 10: " + s10 + "
");
if (checkAnagrams (s9.split(""), s10.split("))) {
document.write("Tak, dwa ciągi są anagramami siebie nawzajem" + "
");
} w przeciwnym razie {
document.write("Nie, te dwa ciągi nie są anagramami siebie nawzajem" + "
");
}

Wyjście:

Ciąg 1: słuchaj
Ciąg 2: cichy
Tak, te dwie struny są anagramami siebie nawzajem
Ciąg 3: Witamy w MUO
Ciąg 4: MUO na powitanie
Tak, te dwie struny są anagramami siebie nawzajem
Ciąg 5: Peter Piper zerwał dziobanie marynowanej papryki
Ciąg 6: Cokół marynowanej papryki zerwał Peter Piper
Nie, te dwa ciągi nie są anagramami siebie nawzajem
Ciąg 7: Sprzedaje muszle nad brzegiem morza
Ciąg 8: muszle nad brzegiem morza
Nie, te dwa ciągi nie są anagramami siebie nawzajem
Ciąg 9: kreatywny
Ciąg 10: reaktywny
Tak, te dwie struny są anagramami siebie nawzajem

Związane z: Jak znaleźć wartość ASCII postaci?

Skorzystaj z odpowiednich zasobów, aby nauczyć się kodować

Jeśli chcesz wzmocnić swoje umiejętności kodowania, ważne jest, aby nauczyć się nowych pojęć i poświęcić czas na ich stosowanie. Jednym ze sposobów, aby to zrobić, są aplikacje programistyczne, które pomogą Ci nauczyć się różnych koncepcji programowania, jednocześnie dobrze się bawiąc.

Udział
E-mail
8 aplikacji, które pomogą Ci nauczyć się kodować na Międzynarodowy Dzień Programisty

Chcesz odświeżyć swoje umiejętności kodowania? Te aplikacje i strony internetowe pomogą Ci nauczyć się programowania we własnym tempie.

Czytaj dalej

Powiązane tematy
  • Programowanie
  • JavaScript
  • Pyton
  • Programowanie C
O autorze
Yuvraj Chandra (43 opublikowane artykuły)

Yuvraj jest studentem informatyki na Uniwersytecie w Delhi w Indiach. Jest pasjonatem Full Stack Web Development. Kiedy nie pisze, bada głębię różnych technologii.

Więcej od Yuvraja Chandra

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować