Autor: Yuvraj Chandra
zdieľam
Email

Porovnanie toho, či sú dva textové reťazce anagrammi, je skvelá úloha pri riešení problémov s vylepšením programovacích schopností.

Anagram je reťazec, ktorý je vytvorený usporiadaním písmen iného reťazca. Kontrola, či sú dva reťazce vzájomnými anagrammi, by mohla znieť ťažko, ale je to len trochu zložité a klamne priame. V tomto článku sa dozviete, ako skontrolovať, či sú dva reťazce vzájomne anagramy pomocou C ++, Python a JavaScript.

Vyhlásenie o probléme

Dostali ste dva reťazce s1 a s2, musíte skontrolovať, či sú dva reťazce navzájom anagramy alebo nie.

Príklad 1: Nech s1 = "kreatívny" a s2 = "reaktívny".

Pretože druhý reťazec môže byť vytvorený usporiadaním písmen prvého reťazca a naopak, sú tieto dva reťazce navzájom anagramy.

Príklad 2: Nech s1 = "Peter Piper vybral kôru nakladaných paprík" a s2 = "Peck nakladaných paprík vybral Peter Piper".

Pretože druhý reťazec nemožno vytvoriť preusporiadaním písmen prvého reťazca a naopak, dva reťazce nie sú vzájomne anagramy.

instagram viewer

Proces kontroly, či sú dva reťazce navzájom anagramy

Podľa nasledujúceho postupu môžete skontrolovať, či sú tieto dva reťazce navzájom anagramy:

  1. Porovnajte dĺžku oboch strún.
  2. Ak dĺžka oboch strún nie je rovnaká, znamená to, že nemôžu byť navzájom anagrammi. Teda návrat false.
  3. Ak je dĺžka oboch strún rovnaká, postupujte ďalej.
  4. Triedte oba reťazce.
  5. Porovnajte oba zoradené reťazce.
  6. Ak sú obidve zoradené reťazce rovnaké, znamená to, že sú navzájom anagramy. Teda návrat pravdivý.
  7. Ak sú oba zoradené reťazce odlišné, znamená to, že nejde o vzájomné anagramy. Teda návrat false.

Súvisiace: Ako skontrolovať, či je reťazec palindróm

Program v C ++ na kontrolu, či sú dva reťazce navzájom anagramy

Nižšie je uvedený program C ++, ktorý slúži na kontrolu, či sú dva reťazce navzájom anagramy alebo nie:

#include 
pomocou namespace std;
bool checkAnagramy (reťazec s1, reťazec s2)
{
int velkost1 = s1.length ();
int size2 = s2.length ();
// Ak dĺžka oboch reťazcov nie je rovnaká,
// znamená to, že nemôžu byť navzájom anagrammi.
// Teda návrat false.
if (veľkosť1! = veľkosť2)
{
návrat nepravdivý;
}
sort (s1.begin (), s1.end ());
sort (s2.begin (), s2.end ());
pre (int i = 0; i {
if (s1 [i]! = s2 [i])
{
návrat nepravdivý;
}
}
návrat pravdivý;
}
int main ()
{
string s1 = "posluch";
reťazec s2 = "tichý";
cout << "Reťazec 1:" << s1 << endl;
cout << "Reťazec 2:" << s2 << endl;
if (checkAnagrams (s1, s2))
{
cout << "Áno, tieto dva reťazce sú navzájom anagramy" << endl;
}
inak
{
cout << "Nie, dva reťazce nie sú vzájomne anagramy" << endl;
}
string s3 = "Vitajte na MUO";
string s4 = "MUO na privítanie";
cout << "Reťazec 3:" << s3 << endl;
cout << "Reťazec 4:" << s4 << endl;
if (checkAnagrams (s3, s4))
{
cout << "Áno, tieto dva reťazce sú navzájom anagramy" << endl;
}
inak
{
cout << "Nie, dva reťazce nie sú vzájomne anagramy" << endl;
}
string s5 = "Peter Piper vybral čertík z nakladaných paprík";
string s6 = "Kiks nakladaných paprík vybral Peter Piper";
cout << "Reťazec 5:" << s5 << endl;
cout << "Reťazec 6:" << s6 << endl;
if (checkAnagrams (s5, s6))
{
cout << "Áno, tieto dva reťazce sú navzájom anagramy" << endl;
}
inak
{
cout << "Nie, dva reťazce nie sú vzájomne anagramy" << endl;
}
string s7 = "Predáva mušle pri pobreží";
string s8 = "mušle pri pobreží";
cout << "Reťazec 7:" << s7 << endl;
cout << "Reťazec 8:" << s8 << endl;
if (checkAnagrams (s7, s8))
{
cout << "Áno, tieto dva reťazce sú navzájom anagramy" << endl;
}
inak
{
cout << "Nie, dva reťazce nie sú vzájomne anagramy" << endl;
}
reťazec s9 = "kreatívny";
reťazec s10 = "reaktívny";
cout << "Reťazec 9:" << s9 << endl;
cout << "Reťazec 10:" << s10 << endl;
if (checkAnagrams (s9, s10))
{
cout << "Áno, tieto dva reťazce sú navzájom anagramy" << endl;
}
inak
{
cout << "Nie, dva reťazce nie sú vzájomne anagramy" << endl;
}
návrat 0;
}

Výkon:

Reťazec 1: počúvajte
Reťazec 2: tichý
Áno, tieto dva reťazce sú navzájom anagramy
Reťazec 3: Vitajte na MUO
Reťazec 4: MUO na privítanie
Áno, tieto dva reťazce sú navzájom anagramy
Reťazec 5: Peter Piper nazbieral kopu nakladaných paprík
Reťazec 6: Kiks nakladaných paprík vybral Peter Piper
Nie, tieto dva reťazce nie sú vzájomnými anagrammi
Reťazec 7: Predáva mušle pri pobreží
Reťazec 8: mušle pri pobreží
Nie, tieto dva reťazce nie sú vzájomnými anagrammi
Reťazec 9: kreatívny
Reťazec 10: reaktívny
Áno, tieto dva reťazce sú navzájom anagramy

Súvisiace: Ako počítať výskyty danej postavy v reťazci

Program v Pythone na kontrolu toho, či sú dva reťazce navzájom anagramy

Ďalej je uvedený program Python, ktorý kontroluje, či sú dva reťazce navzájom anagramy alebo nie:

def checkAnagramy (s1, s2):
size1 = len (s1)
size2 = len (s2)
# Ak dĺžka oboch reťazcov nie je rovnaká,
# to znamená, že nemôžu byť navzájom anagrammi.
# Teda návrat false.
ak veľkosť1! = veľkosť2:
návrat 0
s1 = zoradené (s1)
s2 = zoradené (s2)
pre i v rozsahu (0, veľkosť1):
ak s1 [i]! = s2 [i]:
návrat False
návrat Pravda
s1 = "počúvať"
s2 = "tichý"
print ("Reťazec 1:", s1)
print ("String 2:", s2)
if (checkAnagrams (s1, s2)):
print („Áno, tieto dva reťazce sú navzájom anagramy“)
inak:
print ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi")
s3 = "Vitajte na MUO"
s4 = "MUO na privítanie"
print ("Reťazec 3:", s3)
print ("Reťazec 4:", s4)
if (checkAnagrams (s3, s4)):
print („Áno, tieto dva reťazce sú navzájom anagramy“)
inak:
print ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi")
s5 = "Peter Piper vybral pár nakladaných paprík"
s6 = "Hromadu nakladaných paprík vybral Peter Piper"
print ("String 5:", s5)
print ("Reťazec 6:", s6)
if (checkAnagrams (s5, s6)):
print („Áno, tieto dva reťazce sú navzájom anagramy“)
inak:
print ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi")
s7 = "Predáva mušle pri pobreží"
s8 = "mušle pri pobreží"
print ("Reťazec 7:", s7)
print ("String 8:", s8)
if (checkAnagrams (s7, s8)):
print („Áno, tieto dva reťazce sú navzájom anagramy“)
inak:
print ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi")
s9 = "kreatívny"
s10 = "reaktívny"
print ("Reťazec 9:", s9)
print ("String 10:", s10)
if (checkAnagrams (s9, s10)):
print („Áno, tieto dva reťazce sú navzájom anagramy“)
inak:
print ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi")

Výkon:

Reťazec 1: počúvajte
Reťazec 2: tichý
Áno, tieto dva reťazce sú navzájom anagramy
Reťazec 3: Vitajte na MUO
Reťazec 4: MUO na privítanie
Áno, tieto dva reťazce sú navzájom anagramy
Reťazec 5: Peter Piper nazbieral kopu nakladaných paprík
Reťazec 6: Kiks nakladaných paprík vybral Peter Piper
Nie, tieto dva reťazce nie sú vzájomnými anagrammi
Reťazec 7: Predáva mušle pri pobreží
Reťazec 8: mušle pri pobreží
Nie, tieto dva reťazce nie sú vzájomnými anagrammi
Reťazec 9: kreatívny
Reťazec 10: reaktívny
Áno, tieto dva reťazce sú navzájom anagramy

Súvisiace: Ako nájsť samohlásky, spoluhlásky, číslice a špeciálne znaky v reťazci

Skontrolujte, či sú dva reťazce navzájom anagramy v JavaScripte

Nižšie je uvedený program JavaScript, ktorý kontroluje, či sú dva reťazce navzájom anagramy alebo nie:

kontrola funkcieAnagramy (s1, s2) {
nech veľkosť1 = s1.length;
nech veľkosť2 = s2.dĺžka;
// Ak dĺžka oboch reťazcov nie je rovnaká,
// znamená to, že nemôžu byť navzájom anagrammi.
// Teda návrat false.
if (veľkosť1! = veľkosť2)
{
návrat nepravdivý;
}
s1.sort ();
s2.sort ();
pre (nech i = 0; i {
if (s1 [i]! = s2 [i])
{
návrat nepravdivý;
}
}
návrat pravdivý;
}
var s1 = "počúvať";
var s2 = "tichý";
document.write ("Reťazec 1:" + s1 + "
");
document.write ("Reťazec 2:" + s2 + "
");
if (checkAnagrams (s1.split (""), s2.split (""))) {
document.write ("Áno, tieto dva reťazce sú vzájomné anagramy" + "
");
} else {
document.write ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi" + "
");
}
var s3 = "Vitajte na MUO";
var s4 = "MUO na privítanie";
document.write ("Reťazec 3:" + s3 + "
");
document.write ("Reťazec 4:" + s4 + "
");
if (checkAnagrams (s3.split (""), s4.split (""))) {
document.write ("Áno, tieto dva reťazce sú vzájomné anagramy" + "
");
} else {
document.write ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi" + "
");
}
var s5 = "Peter Piper vybral pár nakladaných paprík";
var s6 = "Hromadu nakladaných paprík vybral Peter Piper";
document.write ("Reťazec 5:" + s5 + "
");
document.write ("Reťazec 6:" + s6 + "
");
if (checkAnagrams (s5.split (""), s6.split (""))) {
document.write ("Áno, tieto dva reťazce sú vzájomné anagramy" + "
");
} else {
document.write ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi" + "
");
}
var s7 = "Predáva mušle pri pobreží";
var s8 = "mušle pri pobreží";
document.write ("Reťazec 7:" + s7 + "
");
document.write ("Reťazec 8:" + s8 + "
");
if (checkAnagrams (s7.split (""), s8.split (""))) {
document.write ("Áno, tieto dva reťazce sú vzájomné anagramy" + "
");
} else {
document.write ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi" + "
");
}
var s9 = "kreatívny";
var s10 = "reaktívny";
document.write ("Reťazec 9:" + s9 + "
");
document.write ("Reťazec 10:" + s10 + "
");
if (checkAnagrams (s9.split (""), s10.split (""))) {
document.write ("Áno, tieto dva reťazce sú vzájomné anagramy" + "
");
} else {
document.write ("Nie, tieto dva reťazce nie sú vzájomnými anagrammi" + "
");
}

Výkon:

Reťazec 1: počúvajte
Reťazec 2: tichý
Áno, tieto dva reťazce sú navzájom anagramy
Reťazec 3: Vitajte na MUO
Reťazec 4: MUO na privítanie
Áno, tieto dva reťazce sú navzájom anagramy
Reťazec 5: Peter Piper nazbieral kopu nakladaných paprík
Reťazec 6: Kiks nakladaných paprík vybral Peter Piper
Nie, tieto dva reťazce nie sú vzájomnými anagrammi
Reťazec 7: Predáva mušle pri pobreží
Reťazec 8: mušle pri pobreží
Nie, tieto dva reťazce nie sú vzájomnými anagrammi
Reťazec 9: kreatívny
Reťazec 10: reaktívny
Áno, tieto dva reťazce sú navzájom anagramy

Súvisiace: Ako zistíte hodnotu ASCII postavy?

Naučte sa kódovať pomocou správnych zdrojov

Ak si chcete upevniť svoje schopnosti kódovania, je dôležité osvojiť si nové koncepty a venovať im čas. Jedným zo spôsobov, ako to dosiahnuť, sú programovacie aplikácie, ktoré vám pomôžu naučiť sa rôzne koncepty programovania a zároveň sa baviť súčasne.

zdieľam
Email
8 aplikácií, ktoré vám pomôžu naučiť sa kódovať Medzinárodný deň programátorov

Chcete oprášiť svoje schopnosti kódovania? Tieto aplikácie a webové stránky vám pomôžu naučiť sa programovať vlastným tempom.

Prečítajte si Ďalej

Súvisiace témy
  • Programovanie
  • JavaScript
  • Python
  • C Programovanie
O autorovi
Yuvraj Chandra (43 publikovaných článkov)

Yuvraj je vysokoškolský študent v odbore počítačových vied na indickej univerzite v Dillí. Je vášnivý pre vývoj webových stránok na princípe Full Stack. Ak nepíše, skúma hĺbku rôznych technológií.

Viac od Yuvraja Chandru

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!

Prihláste sa kliknutím tu