Autor: Yuvraj Chandra
Podíl
E-mailem

Porovnání toho, zda jsou dva textové řetězce anagramy, je velkým úkolem při řešení problémů s vylepšením programovacích dovedností.

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

Problémové prohlášení

Dostali jste dva řetězce s1 a s2, musíte zkontrolovat, zda jsou dva řetězce navzájem anagramy nebo ne.

Příklad 1: Nechť s1 = "kreativní" a s2 = "reaktivní".

Vzhledem k tomu, ž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 anagramy.

Příklad 2: Nechť s1 = "Peter Piper vybral špetku nakládaných paprik" a s2 = "Peck nakládaných paprik vybral Peter Piper".

Vzhledem k tomu, že druhý řetězec nelze vytvořit přeuspořádáním písmen prvního řetězce a naopak, nejsou tyto dva řetězce navzájem anagramy.

instagram viewer

Proces kontroly, zda jsou dva řetězce navzájem anagramy

Podle níže uvedeného postupu můžete zkontrolovat, zda jsou dva řetězce navzájem anagramy:

  1. Porovnejte délku obou řetězců.
  2. Pokud délka obou řetězců není stejná, znamená to, že nemohou být navzájem anagramy. Tedy vrátit 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 jsou navzájem přesmyčky. Takže návrat true.
  7. Pokud jsou oba seřazené řetězce odlišné, znamená to, že nejde o přesmyčky. Tedy vrátit false.

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

Program C ++ ke kontrole, zda jsou dva řetězce navzájem anagramy

Níže je program C ++, který kontroluje, zda jsou dva řetězce navzájem anagramy nebo ne:

#zahrnout 
pomocí jmenného prostoru std;
bool checkAnagramy (řetězec s1, řetězec s2)
{
int size1 = s1.length ();
int size2 = s2.length ();
// Pokud délka obou řetězců není stejná,
// to znamená, že nemohou být navzájem anagramy.
// Tedy return false.
if (size1! = size2)
{
návrat false;
}
sort (s1.begin (), s1.end ());
sort (s2.begin (), s2.end ());
pro (int i = 0; i {
if (s1 [i]! = s2 [i])
{
návrat false;
}
}
návrat true;
}
int main ()
{
řetězec s1 = "poslouchat";
řetězec s2 = "tichý";
cout << "Řetězec 1:" << s1 << endl;
cout << "Řetězec 2:" << s2 << endl;
if (checkAnagrams (s1, s2))
{
cout << "Ano, dva řetězce jsou navzájem anagramy" << endl;
}
jiný
{
cout << "Ne, tyto dva řetězce nejsou vzájemně přesmyčky" << endl;
}
string s3 = "Vítejte na MUO";
string s4 = "MUO to Welcome";
cout << "Řetězec 3:" << s3 << endl;
cout << "Řetězec 4:" << s4 << endl;
if (checkAnagrams (s3, s4))
{
cout << "Ano, dva řetězce jsou navzájem anagramy" << endl;
}
jiný
{
cout << "Ne, tyto dva řetězce nejsou vzájemně přesmyčky" << endl;
}
string s5 = "Peter Piper vybral hrnek nakládaných paprik";
string s6 = "Pikantní nakládaná paprika, kterou vybral Peter Piper";
cout << "Řetězec 5:" << s5 << endl;
cout << "Řetězec 6:" << s6 << endl;
if (checkAnagrams (s5, s6))
{
cout << "Ano, dva řetězce jsou navzájem anagramy" << endl;
}
jiný
{
cout << "Ne, tyto dva řetězce nejsou vzájemně přesmyčky" << endl;
}
string s7 = "Prodává mušle u pobřeží";
řetězec s8 = "mušle u pobřeží";
cout << "Řetězec 7:" << s7 << endl;
cout << "Řetězec 8:" << s8 << endl;
if (checkAnagrams (s7, s8))
{
cout << "Ano, dva řetězce jsou navzájem anagramy" << endl;
}
jiný
{
cout << "Ne, tyto dva řetězce nejsou vzájemně přesmyčky" << endl;
}
řetězec s9 = "kreativní";
řetězec s10 = "reaktivní";
cout << "Řetězec 9:" << s9 << endl;
cout << "Řetězec 10:" << s10 << endl;
if (checkAnagrams (s9, s10))
{
cout << "Ano, dva řetězce jsou navzájem anagramy" << endl;
}
jiný
{
cout << "Ne, tyto dva řetězce nejsou vzájemně přesmyčky" << endl;
}
návrat 0;
}

Výstup:

Řetězec 1: poslouchejte
Řetězec 2: tichý
Ano, tyto dva řetězce jsou navzájem anagramy
Řetězec 3: Vítejte na MUO
Řetězec 4: MUO Vítejte
Ano, tyto dva řetězce jsou navzájem anagramy
Řetězec 5: Peter Piper vybral kousek nakládaných paprik
Řetězec 6: Peck nakládaných paprik vybral Peter Piper
Ne, tyto dva řetězce nejsou navzájem přesmyčky
Řetězec 7: Mušle prodává u pobřeží
Řetězec 8: mušle u pobřeží
Ne, tyto dva řetězce nejsou navzájem přesmyčky
Řetězec 9: kreativní
Řetězec 10: reaktivní
Ano, tyto dva řetězce jsou navzájem anagramy

Příbuzný: Jak spočítat výskyt dané postavy v řetězci

Program v Pythonu ke kontrole, zda jsou dva řetězce navzájem anagramy

Níže je program Python, který kontroluje, zda jsou dva řetězce navzájem anagramy nebo ne:

def checkAnagramy (s1, s2):
size1 = len (s1)
size2 = len (s2)
# Pokud délka obou řetězců není stejná,
# to znamená, že nemohou být navzájem anagramy.
# Tedy vrátit false.
pokud size1! = size2:
návrat 0
s1 = tříděno (s1)
s2 = tříděno (s2)
pro i v rozsahu (0, velikost1):
pokud s1 [i]! = s2 [i]:
vrátit False
vrátit True
s1 = "poslouchat"
s2 = "tichý"
print ("Řetězec 1:", s1)
print ("Řetězec 2:", s2)
if (checkAnagrams (s1, s2)):
print ("Ano, tyto dva řetězce jsou navzájem anagramy")
jiný:
print ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky")
s3 = "Vítejte na MUO"
s4 = "MUO to Welcome"
print ("Řetězec 3:", s3)
print ("Řetězec 4:", s4)
if (checkAnagrams (s3, s4)):
print ("Ano, tyto dva řetězce jsou navzájem anagramy")
jiný:
print ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky")
s5 = "Peter Piper vybral kousek nakládaných paprik"
s6 = "Peck nakládaných paprik vybral Peter Piper"
print ("Řetězec 5:", s5)
print ("Řetězec 6:", s6)
if (checkAnagrams (s5, s6)):
print ("Ano, tyto dva řetězce jsou navzájem anagramy")
jiný:
print ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky")
s7 = "Prodává mušle u pobřeží"
s8 = "mušle u pobřeží"
print ("Řetězec 7:", s7)
print ("Řetězec 8:", s8)
if (checkAnagrams (s7, s8)):
print ("Ano, tyto dva řetězce jsou navzájem anagramy")
jiný:
print ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky")
s9 = "kreativní"
s10 = "reaktivní"
print ("Řetězec 9:", s9)
print ("Řetězec 10:", s10)
if (checkAnagrams (s9, s10)):
print ("Ano, tyto dva řetězce jsou navzájem anagramy")
jiný:
print ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky")

Výstup:

Řetězec 1: poslouchejte
Řetězec 2: tichý
Ano, tyto dva řetězce jsou navzájem anagramy
Řetězec 3: Vítejte na MUO
Řetězec 4: MUO Vítejte
Ano, tyto dva řetězce jsou navzájem anagramy
Řetězec 5: Peter Piper vybral kousek nakládaných paprik
Řetězec 6: Peck nakládaných paprik vybral Peter Piper
Ne, tyto dva řetězce nejsou navzájem přesmyčky
Řetězec 7: Mušle prodává u pobřeží
Řetězec 8: mušle u pobřeží
Ne, tyto dva řetězce nejsou navzájem přesmyčky
Řetězec 9: kreativní
Řetězec 10: reaktivní
Ano, tyto dva řetězce jsou navzájem anagramy

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

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 anagramy nebo ne:

funkční kontrolaAnagramy (s1, s2) {
nechť size1 = s1.length;
nechť size2 = s2.length;
// Pokud délka obou řetězců není stejná,
// to znamená, že nemohou být navzájem anagramy.
// Tedy return false.
if (size1! = size2)
{
návrat false;
}
s1.sort ();
s2.sort ();
pro (ať i = 0; i {
if (s1 [i]! = s2 [i])
{
návrat false;
}
}
návrat true;
}
var s1 = "poslouchat";
var s2 = "tichý";
document.write ("Řetězec 1:" + s1 + "
");
document.write ("Řetězec 2:" + s2 + "
");
if (checkAnagrams (s1.split (""), s2.split (""))) {
document.write ("Ano, dva řetězce jsou navzájem přesmyčky" + "
");
} else {
document.write ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky" + "
");
}
var s3 = "Vítejte na MUO";
var s4 = "MUO to Welcome";
document.write ("Řetězec 3:" + s3 + "
");
document.write ("Řetězec 4:" + s4 + "
");
if (checkAnagrams (s3.split (""), s4.split (""))) {
document.write ("Ano, dva řetězce jsou navzájem přesmyčky" + "
");
} else {
document.write ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky" + "
");
}
var s5 = "Peter Piper vybral kousek nakládaných paprik";
var s6 = "Pikantní nakládaná paprika, kterou vybral Peter Piper";
document.write ("Řetězec 5:" + s5 + "
");
document.write ("Řetězec 6:" + s6 + "
");
if (checkAnagrams (s5.split (""), s6.split (""))) {
document.write ("Ano, dva řetězce jsou navzájem přesmyčky" + "
");
} else {
document.write ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky" + "
");
}
var s7 = "Prodává mušle u pobřeží";
var s8 = "mušle u pobřeží";
document.write ("Řetězec 7:" + s7 + "
");
document.write ("Řetězec 8:" + s8 + "
");
if (checkAnagrams (s7.split (""), s8.split (""))) {
document.write ("Ano, dva řetězce jsou navzájem přesmyčky" + "
");
} else {
document.write ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky" + "
");
}
var s9 = "kreativní";
var s10 = "reaktivní";
document.write ("Řetězec 9:" + s9 + "
");
document.write ("Řetězec 10:" + s10 + "
");
if (checkAnagrams (s9.split (""), s10.split (""))) {
document.write ("Ano, dva řetězce jsou navzájem přesmyčky" + "
");
} else {
document.write ("Ne, tyto dva řetězce nejsou vzájemně přesmyčky" + "
");
}

Výstup:

Řetězec 1: poslouchejte
Řetězec 2: tichý
Ano, tyto dva řetězce jsou navzájem anagramy
Řetězec 3: Vítejte na MUO
Řetězec 4: MUO Vítejte
Ano, tyto dva řetězce jsou navzájem anagramy
Řetězec 5: Peter Piper vybral kousek nakládaných paprik
Řetězec 6: Peck nakládaných paprik vybral Peter Piper
Ne, tyto dva řetězce nejsou navzájem přesmyčky
Řetězec 7: Mušle prodává u pobřeží
Řetězec 8: mušle u pobřeží
Ne, tyto dva řetězce nejsou navzájem přesmyčky
Řetězec 9: kreativní
Řetězec 10: reaktivní
Ano, tyto dva řetězce jsou navzájem anagramy

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

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

Pokud chcete upevnit své dovednosti v kódování, je důležité naučit se nové koncepty a věnovat jim čas. 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
E-mailem
8 aplikací, které vám pomohou naučit se kódovat Mezinárodní den programátorů

Chcete oprášit své dovednosti v kódování? Tyto aplikace a weby vám pomohou naučit se programování vlastním tempem.

Přečtěte si další

Související témata
  • Programování
  • JavaScript
  • Krajta
  • C Programování
O autorovi
Yuvraj Chandra (43 článků publikováno)

Yuvraj je vysokoškolský student výpočetní techniky na univerzitě v Dillí v Indii. Je vášnivým vývojářem Full Stack Web Development. 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 s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!

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