Avtor Yuvraj Chandra
Deliti
E-naslov

Primerjava, če sta dva besedilna niza anagrama, je odlična naloga za reševanje težav pri izboljšanju spretnosti programiranja.

Anagram je niz, ki nastane s prerazporeditvijo črk drugega niza. Preverjanje, ali sta dva niza anagrama drug drugega, se morda sliši težko, vendar je le nekoliko zapleteno in varljivo enostavno. V tem članku boste izvedeli, kako s C ++, Python in JavaScript preveriti, ali sta dva niza anagrama drug drugega.

Izjava o težavi

Dobili ste dva niza s1 in s2, preveriti morate, ali sta niz anagrama drug drugemu ali ne.

Primer 1: Naj bo s1 = "kreativno" in s2 = "reaktivno".

Ker lahko drugi niz tvorimo s prerazporeditvijo črk prvega niza in obratno, sta oba niza anagrama drug drugega.

2. primer: Naj s1 = "Peter Piper je nabral pecico vložene paprike" in s2 = "Klop vložene paprike, ki jo je pobral Peter Piper".

Ker drugega niza ni mogoče oblikovati s prerazporeditvijo črk prvega niza in obratno, torej oba niza nista anagrama drug drugega.

Postopek preverjanja, ali sta dva niza anagrama drug drugega

Sledite spodnjemu pristopu in preverite, ali sta niza anagrama drug drugega:

  1. Primerjajte dolžino obeh strun.
  2. Če dolžina obeh nizov ni enaka, to pomeni, da ne moreta biti anagrama drug drugega. Tako vrnite false.
  3. Če je dolžina obeh nizov enaka, nadaljujte naprej.
  4. Razvrsti oba niza.
  5. Primerjaj oba razvrščena niza.
  6. Če sta oba razvrščena niza enaka, to pomeni, da sta medsebojna anagrama. Tako se vrnite res.
  7. Če sta oba razvrščena niza različna, to pomeni, da nista anagrama drug drugega. Tako vrnite false.

Sorodno: Kako preveriti, ali je niz palindrom

Program C ++ za preverjanje, ali sta dva niza anagrama drug drugega

Spodaj je program C ++ za preverjanje, ali sta dva niza anagrama drug drugega ali ne:

#include 
uporaba imenskega prostora std;
bool checkAnagrams (niz s1, niz s2)
{
int size1 = s1.length ();
int size2 = s2.length ();
// Če dolžina obeh nizov ni enaka,
// to pomeni, da ne moreta biti anagrama drug drugega.
// Tako vrne false.
če (velikost1! = velikost2)
{
vrni false;
}
razvrsti (s1.begin (), s1.end ());
razvrsti (s2.begin (), s2.end ());
za (int i = 0; i {
če (s1 [i]! = s2 [i])
{
vrni false;
}
}
vrnitev true;
}
int main ()
{
niz s1 = "poslušaj";
niz s2 = "tiho";
cout << "Niz 1:" << s1 << endl;
cout << "Niz 2:" << s2 << endl;
če (checkAnagrams (s1, s2))
{
cout << "Da, niz sta anagrama drug drugega" << endl;
}
drugače
{
cout << "Ne, dva niza nista anagrama drug drugega" << endl;
}
string s3 = "Dobrodošli v MUO";
string s4 = "MUO za dobrodošlico";
cout << "Niz 3:" << s3 << endl;
cout << "Niz 4:" << s4 << endl;
če (checkAnagrams (s3, s4))
{
cout << "Da, niz sta anagrama drug drugega" << endl;
}
drugače
{
cout << "Ne, dva niza nista anagrama drug drugega" << endl;
}
string s5 = "Peter Piper je nabral čepek vložene paprike";
string s6 = "Klop vložene paprike, ki jo je nabral Peter Piper";
cout << "Niz 5:" << s5 << endl;
cout << "Niz 6:" << s6 << endl;
če (checkAnagrams (s5, s6))
{
cout << "Da, niz sta anagrama drug drugega" << endl;
}
drugače
{
cout << "Ne, dva niza nista anagrama drug drugega" << endl;
}
string s7 = "Prodaja morske školjke ob morski obali";
niz s8 = "školjke ob morski obali";
cout << "Niz 7:" << s7 << endl;
cout << "Niz 8:" << s8 << endl;
če (checkAnagrams (s7, s8))
{
cout << "Da, niz sta anagrama drug drugega" << endl;
}
drugače
{
cout << "Ne, dva niza nista anagrama drug drugega" << endl;
}
niz s9 = "ustvarjalno";
niz s10 = "reaktiven";
cout << "Niz 9:" << s9 << endl;
cout << "Niz 10:" << s10 << endl;
če (checkAnagrams (s9, s10))
{
cout << "Da, niz sta anagrama drug drugega" << endl;
}
drugače
{
cout << "Ne, dva niza nista anagrama drug drugega" << endl;
}
vrnitev 0;
}

Izhod:

Struna 1: poslušajte
Niz 2: tiho
Ja, niz sta anagrama drug drugega
Niz 3: Dobrodošli v MUO
String 4: MUO za dobrodošlico
Ja, niz sta anagrama drug drugega
Struna 5: Peter Piper je nabral čep vložene paprike
6. vrvica: Klop vložene paprike, ki jo je nabral Peter Piper
Ne, niza nista anagrama drug drugega
Struna 7: Prodaja morske školjke ob morski obali
Struna 8: školjke ob morski obali
Ne, niza nista anagrama drug drugega
Struna 9: ustvarjalna
Niz 10: reaktiven
Ja, niz sta anagrama drug drugega

Sorodno: Kako prešteti pojavitve danega lika v nizu

Program Python za preverjanje, ali sta dva niza anagrama drug drugega

Spodaj je program Python za preverjanje, ali sta dva niza anagrama drug drugega ali ne:

def checkAnagrams (s1, s2):
velikost1 = len (s1)
velikost2 = len (s2)
# Če dolžina obeh nizov ni enaka,
# to pomeni, da ne moreta biti anagrama drug drugega.
# Tako vrnite false.
če je size1! = size2:
vrnitev 0
s1 = razvrščeno (s1)
s2 = razvrščeno (s2)
za i v območju (0, velikost1):
če je s1 [i]! = s2 [i]:
vrnitev False
vrni True
s1 = "poslušaj"
s2 = "tiho"
print ("String 1:", s1)
print ("String 2:", s2)
if (checkAnagrams (s1, s2)):
print ("Da, oba niza sta anagrama drug drugega")
sicer:
print ("Ne, dva niza nista anagrama drug drugega")
s3 = "Dobrodošli v MUO"
s4 = "MUO za dobrodošlico"
print ("String 3:", s3)
print ("String 4:", s4)
if (checkAnagrams (s3, s4)):
print ("Da, oba niza sta anagrama drug drugega")
sicer:
print ("Ne, dva niza nista anagrama drug drugega")
s5 = "Peter Piper je nabral čep vložene paprike"
s6 = "Klop vložene paprike, ki jo je nabral Peter Piper"
print ("String 5:", s5)
print ("Niz 6:", s6)
if (checkAnagrams (s5, s6)):
print ("Da, oba niza sta anagrama drug drugega")
sicer:
print ("Ne, dva niza nista anagrama drug drugega")
s7 = "Prodaja morske školjke ob morski obali"
s8 = "školjke ob morski obali"
print ("String 7:", s7)
print ("String 8:", s8)
if (checkAnagrams (s7, s8)):
print ("Da, oba niza sta anagrama drug drugega")
sicer:
print ("Ne, dva niza nista anagrama drug drugega")
s9 = "ustvarjalno"
s10 = "reaktiven"
print ("String 9:", s9)
print ("String 10:", s10)
if (checkAnagrams (s9, s10)):
print ("Da, oba niza sta anagrama drug drugega")
sicer:
print ("Ne, dva niza nista anagrama drug drugega")

Izhod:

Struna 1: poslušajte
Niz 2: tiho
Ja, niz sta anagrama drug drugega
Niz 3: Dobrodošli v MUO
String 4: MUO za dobrodošlico
Ja, niz sta anagrama drug drugega
Struna 5: Peter Piper je nabral čep vložene paprike
6. vrvica: Klop vložene paprike, ki jo je nabral Peter Piper
Ne, niza nista anagrama drug drugega
Struna 7: Prodaja morske školjke ob morski obali
Struna 8: školjke ob morski obali
Ne, niza nista anagrama drug drugega
Struna 9: ustvarjalna
Niz 10: reaktiven
Ja, niz sta anagrama drug drugega

Sorodno: Kako najti samoglasnike, soglasnike, številke in posebne znake v nizu

Preverite, ali sta dva niza anagrama drug drugega v JavaScript

Spodaj je program JavaScript za preverjanje, ali sta dva niza anagrama drug drugega ali ne:

function checkAnagrams (s1, s2) {
naj bo size1 = s1.length;
naj bo size2 = s2.length;
// Če dolžina obeh nizov ni enaka,
// to pomeni, da ne moreta biti anagrama drug drugega.
// Tako vrne false.
če (velikost1! = velikost2)
{
vrni false;
}
s1.sort ();
s2.sort ();
za (naj je i = 0; i {
če (s1 [i]! = s2 [i])
{
vrni false;
}
}
vrnitev true;
}
var s1 = "poslušaj";
var s2 = "tiho";
document.write ("Niz 1:" + s1 + "
");
document.write ("Niz 2:" + s2 + "
");
if (checkAnagrams (s1.split (""), s2.split (""))) {
document.write ("Da, oba niza sta anagrama drug drugega" + "
");
} še {
document.write ("Ne, oba niza nista anagrama drug drugega" + "
");
}
var s3 = "Dobrodošli v MUO";
var s4 = "MUO za dobrodošlico";
document.write ("Niz 3:" + s3 + "
");
document.write ("Niz 4:" + s4 + "
");
if (checkAnagrams (s3.split (""), s4.split (""))) {
document.write ("Da, oba niza sta anagrama drug drugega" + "
");
} še {
document.write ("Ne, oba niza nista anagrama drug drugega" + "
");
}
var s5 = "Peter Piper je nabral čepek vložene paprike";
var s6 = "Klop vložene paprike, ki jo je nabral Peter Piper";
document.write ("Niz 5:" + s5 + "
");
document.write ("Niz 6:" + s6 + "
");
if (checkAnagrams (s5.split (""), s6.split (""))) {
document.write ("Da, oba niza sta anagrama drug drugega" + "
");
} še {
document.write ("Ne, oba niza nista anagrama drug drugega" + "
");
}
var s7 = "Prodaja morske školjke ob morski obali";
var s8 = "školjke ob morski obali";
document.write ("Niz 7:" + s7 + "
");
document.write ("Niz 8:" + s8 + "
");
if (checkAnagrams (s7.split (""), s8.split (""))) {
document.write ("Da, oba niza sta anagrama drug drugega" + "
");
} še {
document.write ("Ne, oba niza nista anagrama drug drugega" + "
");
}
var s9 = "ustvarjalno";
var s10 = "reaktiven";
document.write ("Niz 9:" + s9 + "
");
document.write ("Niz 10:" + s10 + "
");
if (checkAnagrams (s9.split (""), s10.split (""))) {
document.write ("Da, oba niza sta anagrama drug drugega" + "
");
} še {
document.write ("Ne, oba niza nista anagrama drug drugega" + "
");
}

Izhod:

Struna 1: poslušajte
Niz 2: tiho
Ja, niz sta anagrama drug drugega
Niz 3: Dobrodošli v MUO
String 4: MUO za dobrodošlico
Ja, niz sta anagrama drug drugega
Struna 5: Peter Piper je nabral čep vložene paprike
6. vrvica: Klop vložene paprike, ki jo je nabral Peter Piper
Ne, niza nista anagrama drug drugega
Struna 7: Prodaja morske školjke ob morski obali
Struna 8: školjke ob morski obali
Ne, niza nista anagrama drug drugega
Struna 9: ustvarjalna
Niz 10: reaktiven
Ja, niz sta anagrama drug drugega

Sorodno: Kako najdemo vrednost znaka ASCII?

Uporabite prave vire za učenje kodiranja

Če želite utrditi svoje kodiranje, je pomembno, da se naučite novih konceptov in porabite čas za njihovo uporabo. To lahko storite s programi za programiranje, ki vam bodo pomagale pri učenju različnih konceptov programiranja ob hkratni zabavi.

Deliti
E-naslov
8 aplikacij za pomoč pri učenju kodiranja za mednarodni dan programerjev

Bi radi izboljšali svoje kodiranje? S temi aplikacijami in spletnimi mesti se boste lažje naučili programiranja.

Preberite Naprej

Sorodne teme
  • Programiranje
  • JavaScript
  • Python
  • C Programiranje
O avtorju
Yuvraj Chandra (43 objavljenih člankov)

Yuvraj je dodiplomski študent računalništva na Univerzi v Delhiju v Indiji. Navdušen je nad spletnim razvojem Full Stack. Ko ne piše, raziskuje globino različnih tehnologij.

Več od Yuvraj Chandra

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite