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.
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:
- Porovnejte délku obou řetězců.
- Pokud délka obou řetězců není stejná, znamená to, že nemohou být navzájem anagramy. Tedy vrátit false.
- Pokud je délka obou řetězců stejná, pokračujte dále.
- Seřaďte oba řetězce.
- Porovnejte oba seřazené řetězce.
- Pokud jsou oba seřazené řetězce stejné, znamená to, že jsou navzájem přesmyčky. Takže návrat true.
- 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.
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ší
- Programování
- JavaScript
- Krajta
- C Programování
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í.
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