Door Yuvraj Chandra
DeelTweetenE-mail

C++, Python, C of JavaScript: welke je ook gebruikt, gebruik dit algoritme om symmetrische strings te bepalen.

Een snaar heet symmetrisch als beide helften van de snaar hetzelfde zijn. In dit artikel leer je een algoritme om te bepalen of een bepaalde string symmetrisch is of niet. Je leert ook hoe je dit algoritme implementeert in de meest populaire programmeertalen zoals C++, Python, C en JavaScript.

Probleemstelling

Je krijgt een string. U moet bepalen of de gegeven string symmetrisch is of niet.

voorbeeld 1: Laat str = "abab".

Het gegeven is symmetrisch omdat beide helften van de snaar hetzelfde zijn.

De output is dus "Ja, de gegeven string is symmetrisch".

Voorbeeld 2: Laat str = "mevrouw".

Als de lengte van de tekenreeks oneven is, wordt het middelste teken van de tekenreeks genegeerd. Dus 1e helft = "ma" en 2e helft = "am". De twee helften zijn niet hetzelfde.

De output is dus "Nee, de gegeven string is niet symmetrisch".

instagram viewer

Voorbeeld 3: Laat str = "madma".

1e helft = "ma" en 2e helft = "ma". Beide helften van de snaar zijn hetzelfde.

De output is dus "Ja, de gegeven string is symmetrisch".

Algoritme om te bepalen of een gegeven string symmetrisch is of niet

U kunt bepalen of een bepaalde string symmetrisch is of niet door de onderstaande benadering te volgen:

  1. Zoek de lengte van de string.
  2. Zoek de midIndex van de tekenreeks.
    • Als de lengte van de string even is, midIndex = lengte/2.
    • Als de lengte van de string oneven is, midIndex = (lengte/2) + 1. In dit geval wordt het middelste teken van de tekenreeks genegeerd ter vergelijking.
  3. Initialiseer twee aanwijzervariabelen wijzer1 en aanwijzer2. wijzer1 slaat de index op van het eerste teken (0) van de string en aanwijzer2 slaat de index op van het middelste teken (midIndex) van de tekenreeks.
  4. Vergelijk nu de corresponderende karakters van beide helften van de string met a terwijl lus. ren een terwijl herhaal tot wijzer1.
  5. Vergelijk de corresponderende karakters bij indexen wijzer1 en aanwijzer2.
  6. Als een corresponderend teken ongelijk wordt gevonden, keer terug vals. En als er geen overeenkomende tekens worden gevonden die niet op elkaar lijken, keer terug waar.
  7. Zorg er ook voor dat u de waarde van verhoogt wijzer1 en aanwijzer2 in elke iteratie.

C++-programma om te bepalen of een gegeven string symmetrisch is of niet

Hieronder staat het C++-programma om te bepalen of een gegeven string symmetrisch is of niet:

// C++ programma om te controleren of de string symmetrisch is of niet
#erbij betrekken
namespace std; gebruiken;
// Functie om te controleren of de string symmetrisch is of niet
bool isSymmetrical (string str)
{
int midIndex;
int lengte = str.lengte();
// Als de lengte van de string even is
if (lengte % 2 == 0)
{
midIndex = lengte/2;
}
// Als de lengte van de string oneven is
anders
{
midIndex = lengte/2 + 1;
}
int pointer1 = 0;
int pointer2 = midIndex;
terwijl (pointer1{
if (str[pointer1] == str[pointer2])
{
aanwijzer1 += 1;
aanwijzer2 += 1;
}
anders
{
onwaar retourneren;
}
}
retourneer waar;
}
// Bestuurderscode
int hoofd()
{
// Testgeval: 1
string str1 = "abab";
cout << "String 1: " << str1 << endl;
if (isSymmetrisch (str1))
{
cout << "Ja, de gegeven string is symmetrisch" << endl;
}
anders
{
cout << "Nee, de gegeven string is niet symmetrisch" << endl;
}
// Testgeval: 2
string str2 = "mevrouw";
cout << "String 2: " << str2 << endl;
if (isSymmetrisch (str2))
{
cout << "Ja, de gegeven string is symmetrisch" << endl;
}
anders
{
cout << "Nee, de gegeven string is niet symmetrisch" << endl;
}
// Testgeval: 3
string str3 = "madma";
cout << "String 3: " << str3 << endl;
if (isSymmetrisch (str3))
{
cout << "Ja, de gegeven string is symmetrisch" << endl;
}
anders
{
cout << "Nee, de gegeven string is niet symmetrisch" << endl;
}
// Testgeval: 4
string str4 = "burgerlijk";
cout << "String 4: " << str4 << endl;
if (isSymmetrisch (str4))
{
cout << "Ja, de gegeven string is symmetrisch" << endl;
}
anders
{
cout << "Nee, de gegeven string is niet symmetrisch" << endl;
}
// Testgeval: 5
string str5 = "khokho";
cout << "String 5: " << str5 << endl;
if (isSymmetrisch (str5))
{
cout << "Ja, de gegeven string is symmetrisch" << endl;
}
anders
{
cout << "Nee, de gegeven string is niet symmetrisch" << endl;
}
retourneer 0;
}

Uitgang:

String 1: abab
Ja, de gegeven string is symmetrisch
String 2: mevrouw
Nee, de gegeven string is niet symmetrisch
String 3: madma
Ja, de gegeven string is symmetrisch
String 4: civic
Nee, de gegeven string is niet symmetrisch
String 5: Chocho
Ja, de gegeven string is symmetrisch

Verwant: Een string omkeren in C++, Python en JavaScript

Python-programma om te bepalen of een gegeven string symmetrisch is of niet

Hieronder staat het Python-programma om te bepalen of een gegeven string symmetrisch is of niet:

# Python-programma om te controleren of de string symmetrisch is of niet
# Functie om te controleren of de string symmetrisch is of niet
def isSymmetrical (str):
midIndex = 0
lengte = len (str)
als lengte%2 == 0:
midIndex = lengte//2
anders:
midIndex = lengte//2 + 1
wijzer1 = 0
pointer2 = midIndex
while pointer1if (str[pointer1] == str[pointer2]):
aanwijzer1 += 1
aanwijzer2 += 1
anders:
retourneer False
retourneer True
# Testgeval: 1
str1 = "abab"
print("String 1:", str1)
if (isSymmetrisch (str1)):
print("Ja, de gegeven string is symmetrisch")
anders:
print("Nee, de gegeven string is niet symmetrisch")
# Testgeval: 2
str2 = "mevrouw"
print("String 2:", str2)
if (isSymmetrisch (str2)):
print("Ja, de gegeven string is symmetrisch")
anders:
print("Nee, de gegeven string is niet symmetrisch")
# Testgeval: 3
str3 = "madma"
print("String 3:", str3)
if (isSymmetrisch (str3)):
print("Ja, de gegeven string is symmetrisch")
anders:
print("Nee, de gegeven string is niet symmetrisch")
# Testgeval: 4
str4 = "burgerlijk"
print("String 4:", str4)
if (isSymmetrisch (str4)):
print("Ja, de gegeven string is symmetrisch")
anders:
print("Nee, de gegeven string is niet symmetrisch")
# Testgeval: 5
str5 = "chocho"
print("String 5:", str5)
if (isSymmetrisch (str5)):
print("Ja, de gegeven string is symmetrisch")
anders:
print("Nee, de gegeven string is niet symmetrisch")

Uitgang:

String 1: abab
Ja, de gegeven string is symmetrisch
String 2: mevrouw
Nee, de gegeven string is niet symmetrisch
String 3: madma
Ja, de gegeven string is symmetrisch
String 4: civic
Nee, de gegeven string is niet symmetrisch
String 5: Chocho
Ja, de gegeven string is symmetrisch

Verwant: Python leren? Hier leest u hoe u snaren kunt manipuleren

JavaScript-programma om te bepalen of een gegeven string symmetrisch is of niet

Hieronder staat het JavaScript-programma om te bepalen of een gegeven string symmetrisch is of niet:

// JavaScript-programma om te controleren of de string symmetrisch is of niet
// Functie om te controleren of de string symmetrisch is of niet
functie isSymmetrical (str) {
var midIndex;
var lengte = str.lengte;
// Als de lengte van de string even is
if (lengte % 2 == 0) {
midIndex = Math.floor (lengte/2);
}
// Als de lengte van de string oneven is
anders {
midIndex = Math.floor (lengte/2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
terwijl (pointer1if (str[pointer1] == str[pointer2]) {
aanwijzer1 += 1;
aanwijzer2 += 1;
} anders {
onwaar retourneren;
}
}
retourneer waar;
}
// Testgeval: 1
var str1 = "abab";
document.write("String 1: " + str1 + "
");
if (isSymmetrisch (str1)) {
document.write("Ja, de gegeven string is symmetrisch" + "
");
} anders {
document.write("Nee, de gegeven string is niet symmetrisch" + "
");
}
// Testgeval: 2
var str2 = "mevrouw";
document.write("String 2: " + str2 + "
");
if (isSymmetrisch (str2)) {
document.write("Ja, de gegeven string is symmetrisch" + "
");
} anders {
document.write("Nee, de gegeven string is niet symmetrisch" + "
");
}
// Testgeval: 3
var str3 = "madma";
document.write("String 3: " + str3 + "
");
if (isSymmetrisch (str3)) {
document.write("Ja, de gegeven string is symmetrisch" + "
");
} anders {
document.write("Nee, de gegeven string is niet symmetrisch" + "
");
}
// Testgeval: 4
var str4 = "burgerlijk";
document.write("String 4: " + str4 + "
");
if (isSymmetrisch (str4)) {
document.write("Ja, de gegeven string is symmetrisch" + "
");
} anders {
document.write("Nee, de gegeven string is niet symmetrisch" + "
");
}
// Testgeval: 5
var str5 = "khokho";
document.write("String 5: " + str5 + "
");
if (isSymmetrisch (str5)) {
document.write("Ja, de gegeven string is symmetrisch" + "
");
} anders {
document.write("Nee, de gegeven string is niet symmetrisch" + "
");
}

Uitgang:

String 1: abab
Ja, de gegeven string is symmetrisch
String 2: mevrouw
Nee, de gegeven string is niet symmetrisch
String 3: madma
Ja, de gegeven string is symmetrisch
String 4: civic
Nee, de gegeven string is niet symmetrisch
String 5: Chocho
Ja, de gegeven string is symmetrisch

Verwant: Hoe het meest voorkomende karakter in een string te vinden

Problemen oplossen op basis van strings

Strings zijn een van de belangrijkste onderwerpen voor het programmeren van interviews. Je moet enkele van de bekende programmeerproblemen oplossen op basis van strings, zoals check of een string een palindroom is, check als twee strings anagrammen van elkaar zijn, zoek dan het meest voorkomende teken in een string, draai een string om, enz. als u volledig voorbereid wilt zijn.

DeelTweetenE-mail
Hoe te controleren of een string een palindroom is?

Is je snaar een palindroom? Of je nu Python, C++ of JavaScript gebruikt, gebruik een van deze algoritmen om erachter te komen.

Lees volgende

Gerelateerde onderwerpen
  • Programmeren
  • JavaScript
  • Python
  • Codeerhandleidingen
  • C Programmeren
Over de auteur
Yuvraj Chandra (50 artikelen gepubliceerd)

Yuvraj is een student Computerwetenschappen aan de Universiteit van Delhi, India. Hij is gepassioneerd door Full Stack Web Development. Als hij niet aan het schrijven is, onderzoekt hij de diepte van verschillende technologieën.

Meer van Yuvraj Chandra

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren