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.
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:
- Porovnajte dĺžku oboch strún.
- Ak dĺžka oboch strún nie je rovnaká, znamená to, že nemôžu byť navzájom anagrammi. Teda návrat false.
- Ak je dĺžka oboch strún rovnaká, postupujte ďalej.
- Triedte oba reťazce.
- Porovnajte oba zoradené reťazce.
- Ak sú obidve zoradené reťazce rovnaké, znamená to, že sú navzájom anagramy. Teda návrat pravdivý.
- 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.
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
- Programovanie
- JavaScript
- Python
- C Programovanie
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í.
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