Jak zkontrolovat, zda jsou dva řetězce navzájem přesmyčky

Jak zkontrolovat, zda jsou dva řetězce navzájem přesmyčky

Anagram je řetězec vytvořený přeskupením písmen jiného řetězce. Kontrola, zda jsou dva řetězce navzájem přesmyčky, může znít obtížně, ale je to jen trochu záludné a klamně jednoduché. V tomto článku se dozvíte, jak pomocí C ++, Pythonu a JavaScriptu zkontrolovat, zda jsou dva řetězce navzájem přesmyčky.





Problémové prohlášení

Dostanete dva řetězce s1 a s2, musíte zkontrolovat, zda jsou tyto dva řetězce anagramy nebo ne.





Příklad 1 : Nechte s1 = 'kreativní' a s2 = 'reaktivní'.





Protože druhý řetězec může být vytvořen přeskupením písmen prvního řetězce a naopak, jsou tyto dva řetězce navzájem přesmyčky.

Příklad 2 : Let s1 = 'Peter Piper vybral peck nakládané papriky' a s2 = 'Peck nakládané papriky vybral Peter Piper'.



Protože druhý řetězec nelze vytvořit přeskupením písmen prvního řetězce a naopak, tyto dva řetězce nejsou navzájem přesmyčky.

Postup pro kontrolu, zda jsou dva řetězce navzájem přesmyčky

Pomocí níže uvedeného postupu můžete zkontrolovat, zda jsou dva řetězce navzájem přesmyčky:





  1. Porovnejte délku obou řetězců.
  2. Pokud délka obou řetězců není stejná, znamená to, že nemohou být navzájem přesmyčky. Vraťte se tedy false.
  3. Pokud je délka obou řetězců stejná, pokračujte dále.
  4. Seřaďte oba řetězce.
  5. Porovnejte oba seřazené řetězce.
  6. Pokud jsou oba seřazené řetězce stejné, znamená to, že se jedná o navzájem přesmyčky. Vraťte tedy true.
  7. Pokud se oba seřazené řetězce liší, znamená to, že nejsou navzájem přesmyčky. Vraťte se tedy false.

Příbuzný: Jak zkontrolovat, zda je řetězec palindrom

Program C ++, který kontroluje, zda jsou dva řetězce navzájem přesmyčky

Níže je program C ++, který kontroluje, zda jsou dva řetězce navzájem přesmyčky:





#include
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 {
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;
}

Výstup:

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

Související: Jak počítat výskyty daného znaku v řetězci

Program Python ke kontrole, zda jsou dva řetězce navzájem přesmyčky

Níže je uveden program Python, který kontroluje, zda jsou dva řetězce navzájem přesmyčky:

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')

Výstup:

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

Příbuzný: Jak najít v řetězci samohlásky, souhlásky, číslice a speciální znaky

Zkontrolujte, zda jsou dva řetězce navzájem přesmyčky v JavaScriptu

Níže je uveden program JavaScript, který kontroluje, zda jsou dva řetězce navzájem přesmyčky:

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 {
if (s1[i] != s2[i])
{
return false;
}
}
return true;
}

var s1 = 'listen';
var s2 = 'silent';
document.write('String 1: ' + s1 + '
');
document.write('String 2: ' + s2 + '
');
if(checkAnagrams(s1.split(''), s2.split(''))) {
document.write('Yes, the two strings are anagrams of each other' + '
');
} else {
document.write('No, the two strings are not anagrams of each other' + '
');
}
var s3 = 'Welcome to MUO';
var s4 = 'MUO to Welcome';
document.write('String 3: ' + s3 + '
');
document.write('String 4: ' + s4 + '
');
if(checkAnagrams(s3.split(''), s4.split(''))) {
document.write('Yes, the two strings are anagrams of each other' + '
');
} else {
document.write('No, the two strings are not anagrams of each other' + '
');
}
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 + '
');
document.write('String 6: ' + s6 + '
');
if(checkAnagrams(s5.split(''), s6.split(''))) {
document.write('Yes, the two strings are anagrams of each other' + '
');
} else {
document.write('No, the two strings are not anagrams of each other' + '
');
}
var s7 = 'She sells seashells by the seashore';
var s8 = 'seashells by the seashore';
document.write('String 7: ' + s7 + '
');
document.write('String 8: ' + s8 + '
');
if(checkAnagrams(s7.split(''), s8.split(''))) {
document.write('Yes, the two strings are anagrams of each other' + '
');
} else {
document.write('No, the two strings are not anagrams of each other' + '
');
}
var s9 = 'creative';
var s10 = 'reactive';
document.write('String 9: ' + s9 + '
');
document.write('String 10: ' + s10 + '
');
if(checkAnagrams(s9.split(''), s10.split(''))) {
document.write('Yes, the two strings are anagrams of each other' + '
');
} else {
document.write('No, the two strings are not anagrams of each other' + '
');
}

Výstup:

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

Příbuzný: Jak zjistíte hodnotu znaku ASCII?

Naučte se kódovat pomocí správných zdrojů

Pokud chcete upevnit své kódovací schopnosti, je důležité naučit se nové koncepty a trávit čas jejich používáním. Jedním ze způsobů, jak toho dosáhnout, je programování aplikací, které vám pomohou naučit se různé koncepty programování a zároveň se bavit.

Podíl Podíl tweet E-mailem 8 aplikací, které vám pomohou naučit se kódovat k Mezinárodnímu dni programátorů

Chcete zdokonalit své kódovací schopnosti? Tyto aplikace a webové stránky vám pomohou naučit se programovat vlastním tempem.

synchronizujte fotografie na Facebooku s kontakty Android
Číst dále Související témata
  • Programování
  • JavaScript
  • Krajta
  • C Programování
O autorovi Yuvraj Chandra(60 článků zveřejněno)

Yuvraj je studentem informatiky na univerzitě v Dillí v Indii. Je nadšený pro webový vývoj Full Stack. Když nepíše, zkoumá hloubku různých technologií.

Více od Yuvraj Chandra

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru