Av Yuvraj Chandra
Dela med sig
E-post

Jämföra om två textsträngar är anagram är ett stort problemlösning för att förbättra programmeringsförmågan.

Ett anagram är en sträng som bildas genom att ordna om bokstäverna i en annan sträng. Att kontrollera om två strängar är anagram över varandra kan låta svårt, men det är bara lite knepigt och bedrägligt enkelt. I den här artikeln lär du dig hur du kontrollerar om två strängar är anagram över varandra med C ++, Python och JavaScript.

Problemförklaring

Du får två strängar s1 och s2, du måste kontrollera om de två strängarna är anagram över varandra eller inte.

Exempel 1: Låt s1 = "creative" och s2 = "reactive".

Eftersom den andra strängen kan bildas genom att ordna om bokstäverna i den första strängen och vice versa, så är de två strängarna anagram över varandra.

Exempel 2: Låt s1 = "Peter Piper plockade en plock inlagd paprika" och s2 = "En peck inlagd paprika Peter Piper plockade".

instagram viewer

Eftersom den andra strängen inte kan bildas genom att ordna om bokstäverna i den första strängen och vice versa, är de två strängarna således inte anagram över varandra.

Process för att kontrollera om två strängar är varandra

Du kan följa metoden nedan för att kontrollera om de två strängarna är anagram över varandra:

  1. Jämför längden på båda strängarna.
  2. Om längden på båda strängarna inte är densamma betyder det att de inte kan vara anagram över varandra. Återvänd alltså falskt.
  3. Om längden på båda strängarna är densamma, fortsätt vidare.
  4. Sortera båda strängarna.
  5. Jämför båda de sorterade strängarna.
  6. Om båda de sorterade strängarna är desamma betyder det att de är anagram över varandra. Således, återvänd sant.
  7. Om båda de sorterade strängarna är olika betyder det att de inte är anagram över varandra. Återvänd alltså falskt.

Relaterad: Hur man kontrollerar om en sträng är en palindrom

C ++ - program för att kontrollera om två strängar är varandra

Nedan följer C ++ - programmet för att kontrollera om två strängar är anagram över varandra eller inte:

#omfatta 
använder namnrymd std;
bool checkAnagram (sträng s1, sträng s2)
{
int storlek1 = s1.längd ();
int storlek2 = s2.length ();
// Om längden på båda strängarna inte är densamma,
// det betyder att de inte kan vara anagram över varandra.
// Återvänd alltså falskt.
om (storlek1! = storlek2)
{
returnera falsk;
}
sortera (s1.begin (), s1.end ());
sortera (s2.begin (), s2.end ());
för (int i = 0; i {
om (s1 [i]! = s2 [i])
{
returnera falsk;
}
}
återvänd sant;
}
int main ()
{
string s1 = "lyssna";
sträng s2 = "tyst";
cout << "Sträng 1:" << s1 << endl;
cout << "String 2:" << s2 << endl;
if (checkAnagrams (s1, s2))
{
cout << "Ja, de två strängarna är varandras anagram" << endl;
}
annan
{
cout << "Nej, de två strängarna är inte anagram över varandra" << endl;
}
string s3 = "Välkommen till MUO";
string s4 = "MUO till välkomst";
cout << "String 3:" << s3 << endl;
cout << "String 4:" << s4 << endl;
if (checkAnagrams (s3, s4))
{
cout << "Ja, de två strängarna är varandras anagram" << endl;
}
annan
{
cout << "Nej, de två strängarna är inte anagram över varandra" << endl;
}
string s5 = "Peter Piper plockade en bit med inlagda paprika";
string s6 = "En plocka med inlagda paprika som Peter Piper plockade";
cout << "String 5:" << s5 << endl;
cout << "Sträng 6:" << s6 << endl;
if (checkAnagrams (s5, s6))
{
cout << "Ja, de två strängarna är varandras anagram" << endl;
}
annan
{
cout << "Nej, de två strängarna är inte anagram över varandra" << endl;
}
string s7 = "Hon säljer snäckskal vid stranden";
string s8 = "snäckskal vid stranden";
cout << "Sträng 7:" << s7 << endl;
cout << "String 8:" << s8 << endl;
if (checkAnagrams (s7, s8))
{
cout << "Ja, de två strängarna är varandras anagram" << endl;
}
annan
{
cout << "Nej, de två strängarna är inte anagram över varandra" << endl;
}
string s9 = "creative";
sträng s10 = "reaktiv";
cout << "String 9:" << s9 << endl;
cout << "Sträng 10:" << s10 << endl;
if (checkAnagrams (s9, s10))
{
cout << "Ja, de två strängarna är varandras anagram" << endl;
}
annan
{
cout << "Nej, de två strängarna är inte anagram över varandra" << endl;
}
returnera 0;
}

Produktion:

Sträng 1: lyssna
Sträng 2: tyst
Ja, de två strängarna är anagram över varandra
Sträng 3: Välkommen till MUO
String 4: MUO to Welcome
Ja, de två strängarna är anagram över varandra
Sträng 5: Peter Piper plockade en bit med inlagda paprika
Sträng 6: En plocka med inlagda paprika som Peter Piper plockade
Nej, de två strängarna är inte anagram över varandra
Sträng 7: Hon säljer snäckskal vid stranden
Sträng 8: snäckskal vid stranden
Nej, de två strängarna är inte anagram över varandra
Sträng 9: kreativ
Sträng 10: reaktiv
Ja, de två strängarna är anagram över varandra

Relaterad: Hur man räknar förekomsten av en given karaktär i en sträng

Python-programmet för att kontrollera om två strängar är anagram över varandra

Nedan är Python-programmet för att kontrollera om två strängar är anagram över varandra eller inte:

def checkAnagram (s1, s2):
storlek1 = len (s1)
storlek2 = len (s2)
# Om längden på båda strängarna inte är densamma,
# det betyder att de inte kan vara anagram över varandra.
# Återvänd alltså falskt.
om storlek1! = storlek2:
returnera 0
s1 = sorterad (s1)
s2 = sorterad (s2)
för jag inom intervallet (0, storlek1):
om s1 [i]! = s2 [i]:
återvänd Falskt
återvänd True
s1 = "lyssna"
s2 = "tyst"
tryck ("Sträng 1:", s1)
tryck ("String 2:", s2)
if (checkAnagrams (s1, s2)):
tryck ("Ja, de två strängarna är varandras anagram")
annan:
tryck ("Nej, de två strängarna är inte anagram över varandra")
s3 = "Välkommen till MUO"
s4 = "MUO till välkomst"
tryck ("String 3:", s3)
tryck ("String 4:", s4)
if (checkAnagrams (s3, s4)):
tryck ("Ja, de två strängarna är varandras anagram")
annan:
tryck ("Nej, de två strängarna är inte anagram över varandra")
s5 = "Peter Piper plockade en plocka inlagda paprika"
s6 = "En plocka med inlagda paprika som Peter Piper plockade"
tryck ("String 5:", s5)
tryck ("String 6:", s6)
if (checkAnagrams (s5, s6)):
tryck ("Ja, de två strängarna är varandras anagram")
annan:
tryck ("Nej, de två strängarna är inte anagram över varandra")
s7 = "Hon säljer snäckskal vid stranden"
s8 = "snäckskal vid stranden"
tryck ("String 7:", s7)
tryck ("String 8:", s8)
if (checkAnagrams (s7, s8)):
tryck ("Ja, de två strängarna är varandras anagram")
annan:
tryck ("Nej, de två strängarna är inte anagram över varandra")
s9 = "kreativ"
s10 = "reaktiv"
tryck ("String 9:", s9)
tryck ("String 10:", s10)
if (checkAnagrams (s9, s10)):
tryck ("Ja, de två strängarna är varandras anagram")
annan:
tryck ("Nej, de två strängarna är inte anagram över varandra")

Produktion:

Sträng 1: lyssna
Sträng 2: tyst
Ja, de två strängarna är anagram över varandra
Sträng 3: Välkommen till MUO
String 4: MUO to Welcome
Ja, de två strängarna är anagram över varandra
Sträng 5: Peter Piper plockade en bit med inlagda paprika
Sträng 6: En plocka med inlagda paprika som Peter Piper plockade
Nej, de två strängarna är inte anagram över varandra
Sträng 7: Hon säljer snäckskal vid stranden
Sträng 8: snäckskal vid stranden
Nej, de två strängarna är inte anagram över varandra
Sträng 9: kreativ
Sträng 10: reaktiv
Ja, de två strängarna är anagram över varandra

Relaterad: Hur man hittar vokaler, konsonanter, siffror och specialtecken i en sträng

Kontrollera om två strängar är anagram över varandra i JavaScript

Nedan följer JavaScript-programmet för att kontrollera om två strängar är anagram över varandra eller inte:

funktionskontrollAnagram (s1, s2) {
låt storlek1 = s1.längd;
låt storlek2 = s2.längd;
// Om längden på båda strängarna inte är densamma,
// det betyder att de inte kan vara anagram över varandra.
// Återvänd alltså falskt.
om (storlek1! = storlek2)
{
returnera falsk;
}
s1.sort ();
s2.sort ();
för (låt i = 0; i {
om (s1 [i]! = s2 [i])
{
returnera falsk;
}
}
återvänd sant;
}
var s1 = "lyssna";
var s2 = "tyst";
document.write ("Sträng 1:" + s1 + "
");
document.write ("String 2:" + s2 + "
");
if (checkAnagrams (s1.split (""), s2.split (""))) {
document.write ("Ja, de två strängarna är varandras anagram" + "
");
} annat {
document.write ("Nej, de två strängarna är inte anagram över varandra" + "
");
}
var s3 = "Välkommen till MUO";
var s4 = "MUO till välkommen";
document.write ("String 3:" + s3 + "
");
document.write ("String 4:" + s4 + "
");
if (checkAnagrams (s3.split (""), s4.split (""))) {
document.write ("Ja, de två strängarna är varandras anagram" + "
");
} annat {
document.write ("Nej, de två strängarna är inte anagram över varandra" + "
");
}
var s5 = "Peter Piper plockade en bit med inlagda paprika";
var s6 = "En plocka med inlagda paprika som Peter Piper plockade";
document.write ("String 5:" + s5 + "
");
document.write ("String 6:" + s6 + "
");
if (checkAnagrams (s5.split (""), s6.split (""))) {
document.write ("Ja, de två strängarna är varandras anagram" + "
");
} annat {
document.write ("Nej, de två strängarna är inte anagram över varandra" + "
");
}
var s7 = "Hon säljer snäckskal vid stranden";
var s8 = "snäckskal vid stranden";
document.write ("String 7:" + s7 + "
");
document.write ("String 8:" + s8 + "
");
if (checkAnagrams (s7.split (""), s8.split (""))) {
document.write ("Ja, de två strängarna är varandras anagram" + "
");
} annat {
document.write ("Nej, de två strängarna är inte anagram över varandra" + "
");
}
var s9 = "creative";
var s10 = "reaktiv";
document.write ("String 9:" + s9 + "
");
document.write ("String 10:" + s10 + "
");
if (checkAnagrams (s9.split (""), s10.split (""))) {
document.write ("Ja, de två strängarna är varandras anagram" + "
");
} annat {
document.write ("Nej, de två strängarna är inte anagram över varandra" + "
");
}

Produktion:

Sträng 1: lyssna
Sträng 2: tyst
Ja, de två strängarna är anagram över varandra
Sträng 3: Välkommen till MUO
String 4: MUO to Welcome
Ja, de två strängarna är anagram över varandra
Sträng 5: Peter Piper plockade en bit med inlagda paprika
Sträng 6: En plocka med inlagda paprika som Peter Piper plockade
Nej, de två strängarna är inte anagram över varandra
Sträng 7: Hon säljer snäckskal vid stranden
Sträng 8: snäckskal vid stranden
Nej, de två strängarna är inte anagram över varandra
Sträng 9: kreativ
Sträng 10: reaktiv
Ja, de två strängarna är anagram över varandra

Relaterad: Hur hittar du ASCII-värdet av en karaktär?

Använd rätt resurser för att lära dig att koda

Om du vill stärka dina kodfärdigheter är det viktigt att lära sig nya koncept och spendera tid på att använda dem. Ett sätt att göra detta är med programmering av appar, som hjälper dig att lära dig olika programmeringskoncept samtidigt som du har kul samtidigt.

Dela med sig
E-post
8 appar som hjälper dig att lära dig att koda för den internationella programmerarens dag

Vill du förstärka dina kodfärdigheter? Dessa appar och webbplatser hjälper dig att lära dig programmering i din egen takt.

Läs Nästa

Relaterade ämnen
  • Programmering
  • JavaScript
  • Pytonorm
  • C Programmering
Om författaren
Yuvraj Chandra (43 artiklar publicerade)

Yuvraj är en doktorand vid datavetenskap vid University of Delhi, Indien. Han brinner för Full Stack webbutveckling. När han inte skriver utforskar han djupet i olika tekniker.

Mer från Yuvraj Chandra

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera