Yuvraj Chandra
RészvényCsipogEmail

C ++, Python, C vagy JavaScript: függetlenül attól, hogy melyiket használja, használja ezt az algoritmust a szimmetrikus karakterláncok meghatározásához.

Egy húr akkor szimmetrikus, ha a húr mindkét fele azonos. Ebben a cikkben megtanul egy algoritmust annak meghatározására, hogy egy adott karakterlánc szimmetrikus -e vagy sem. Azt is megtanulhatja, hogyan kell megvalósítani ezt az algoritmust a legnépszerűbb programozási nyelveken, például a C ++, a Python, a C és a JavaScript.

Problémajelentés

Kapsz egy karakterláncot. Meg kell határoznia, hogy az adott karakterlánc szimmetrikus -e vagy sem.

1. példa: Legyen str = "abab".

A megadott szimmetrikus, mivel a húr mindkét fele azonos.

Így a kimenet "Igen, az adott karakterlánc szimmetrikus".

2. példa: Legyen str = "asszonyom".

Ha a karakterlánc hossza páratlan, a karakterlánc középső karakterét figyelmen kívül hagyja. Ezért az 1. fele = "ma", a második fele = "am". A két fél nem ugyanaz.

Így a kimenet "Nem, az adott karakterlánc nem szimmetrikus".

3. példa: Legyen str = "madma".

1. fele = "ma", és a második fele = "ma". A húr mindkét fele azonos.

Így a kimenet "Igen, az adott karakterlánc szimmetrikus".

Algoritmus annak meghatározására, hogy egy adott karakterlánc szimmetrikus -e vagy sem

Az alábbi módszerrel meghatározhatja, hogy egy adott karakterlánc szimmetrikus -e vagy sem.

  1. Keresse meg a karakterlánc hosszát.
  2. Keresse meg a karakterlánc középső indexét.
    • Ha a karakterlánc hossza egyenletes, midIndex = hossz/2.
    • Ha a karakterlánc hossza páratlan, midIndex = (hossz/2) + 1. Ebben az esetben a karakterlánc középső karakterét figyelmen kívül hagyja.
  3. Inicializáljon két mutatóváltozót mutató1 és mutató2. mutató1 tárolja a karakterlánc első karakterének (0) indexét és mutató2 tárolja a karakterlánc középső karakterének (midIndex) indexét.
  4. Most hasonlítsa össze a karakterlánc mindkét felének megfelelő karaktereit a segítségével míg hurok. Futtassa a míg hurok addig mutató1.
  5. Hasonlítsa össze a megfelelő karaktereket az indexekben mutató1 és mutató2.
  6. Ha a megfelelő karakterek eltérnek, akkor térjen vissza hamis. És ha nem talál megfelelő karaktereket, térjen vissza igaz.
  7. Ezenkívül ügyeljen arra, hogy növelje a mutató1 és mutató2 minden iterációban.

C ++ program annak meghatározására, hogy egy adott karakterlánc szimmetrikus -e vagy sem

Az alábbiakban a C ++ program határozza meg, hogy egy adott karakterlánc szimmetrikus -e vagy sem:

// C ++ program annak ellenőrzésére, hogy a karakterlánc szimmetrikus -e vagy sem
#befoglalni
névtér használata std;
// Funkció annak ellenőrzésére, hogy a karakterlánc szimmetrikus -e vagy sem
bool isSymmetrical (string str)
{
int midIndex;
int hossz = str.length ();
// Ha a karakterlánc hossza páros
if (hossza % 2 == 0)
{
midIndex = hossz/2;
}
// Ha a karakterlánc hossza páratlan
más
{
midIndex = hossz/2 + 1;
}
int mutató1 = 0;
int mutató2 = középindex;
míg (mutató1{
if (str [mutató1] == str [mutató2])
{
mutató1 += 1;
mutató2 += 1;
}
más
{
return false;
}
}
return true;
}
// Illesztőprogram-kód
int main ()
{
Teszteset: 1
string str1 = "abab";
cout << "String 1:" << str1 << endl;
if (isSymmetrical (str1))
{
cout << "Igen, az adott karakterlánc szimmetrikus" << endl;
}
más
{
cout << "Nem, az adott karakterlánc nem szimmetrikus" << endl;
}
Teszteset: 2
string str2 = "asszony";
cout << "String 2:" << str2 << endl;
if (isSymmetrical (str2))
{
cout << "Igen, az adott karakterlánc szimmetrikus" << endl;
}
más
{
cout << "Nem, az adott karakterlánc nem szimmetrikus" << endl;
}
Teszteset: 3
string str3 = "madma";
cout << "String 3:" << str3 << endl;
if (isSymmetrical (str3))
{
cout << "Igen, az adott karakterlánc szimmetrikus" << endl;
}
más
{
cout << "Nem, az adott karakterlánc nem szimmetrikus" << endl;
}
Teszteset: 4
string str4 = "polgári";
cout << "String 4:" << str4 << endl;
if (isSymmetrical (str4))
{
cout << "Igen, az adott karakterlánc szimmetrikus" << endl;
}
más
{
cout << "Nem, az adott karakterlánc nem szimmetrikus" << endl;
}
Teszteset: 5
string str5 = "khokho";
cout << "String 5:" << str5 << endl;
if (isSymmetrical (str5))
{
cout << "Igen, az adott karakterlánc szimmetrikus" << endl;
}
más
{
cout << "Nem, az adott karakterlánc nem szimmetrikus" << endl;
}
visszatérés 0;
}

Kimenet:

1. karakterlánc: abab
Igen, az adott karakterlánc szimmetrikus
2. karakterlánc: asszonyom
Nem, a megadott karakterlánc nem szimmetrikus
3. karakterlánc: madma
Igen, az adott karakterlánc szimmetrikus
4. karakterlánc: polgári
Nem, a megadott karakterlánc nem szimmetrikus
5. karakterlánc: khokho
Igen, az adott karakterlánc szimmetrikus

Összefüggő: Hogyan lehet visszafordítani egy karakterláncot C ++, Python és JavaScript nyelven

Python program annak meghatározására, hogy egy adott karakterlánc szimmetrikus -e vagy sem

Az alábbiakban a Python program határozza meg, hogy egy adott karakterlánc szimmetrikus -e vagy sem:

# Python program annak ellenőrzésére, hogy a karakterlánc szimmetrikus -e vagy sem
# Funkció annak ellenőrzésére, hogy a karakterlánc szimmetrikus -e vagy sem
def isSymmetrical (str):
midIndex = 0
hossz = len (str)
ha%2 == 0:
midIndex = hossz // 2
más:
midIndex = hossz // 2 + 1
mutató1 = 0
mutató2 = középindex
míg a mutató1ha (str [mutató1] == str [mutató2]):
mutató1 += 1
mutató2 += 1
más:
return Hamis
return True
# Teszteset: 1
str1 = "abab"
print ("String 1:", str1)
if (isSymmetrical (str1)):
print ("Igen, a megadott karakterlánc szimmetrikus")
más:
print ("Nem, a megadott karakterlánc nem szimmetrikus")
# Teszteset: 2
str2 = "asszony"
print ("String 2:", str2)
ha (isSymmetrical (str2)):
print ("Igen, a megadott karakterlánc szimmetrikus")
más:
print ("Nem, a megadott karakterlánc nem szimmetrikus")
# Teszteset: 3
str3 = "madma"
print ("3. karakterlánc:", str3)
ha (isSymmetrical (str3)):
print ("Igen, a megadott karakterlánc szimmetrikus")
más:
print ("Nem, a megadott karakterlánc nem szimmetrikus")
# Teszteset: 4
str4 = "polgári"
print ("String 4:", str4)
ha (isSymmetrical (str4)):
print ("Igen, a megadott karakterlánc szimmetrikus")
más:
print ("Nem, a megadott karakterlánc nem szimmetrikus")
# Teszteset: 5
str5 = "khokho"
print ("String 5:", str5)
ha (isSymmetrical (str5)):
print ("Igen, a megadott karakterlánc szimmetrikus")
más:
print ("Nem, a megadott karakterlánc nem szimmetrikus")

Kimenet:

1. karakterlánc: abab
Igen, az adott karakterlánc szimmetrikus
2. karakterlánc: asszonyom
Nem, a megadott karakterlánc nem szimmetrikus
3. karakterlánc: madma
Igen, az adott karakterlánc szimmetrikus
4. karakterlánc: polgári
Nem, a megadott karakterlánc nem szimmetrikus
5. karakterlánc: khokho
Igen, az adott karakterlánc szimmetrikus

Összefüggő: Python tanulása? Íme, hogyan lehet manipulálni a karakterláncokat

JavaScript program annak meghatározására, hogy egy adott karakterlánc szimmetrikus -e vagy sem

Az alábbiakban a JavaScript program határozza meg, hogy egy adott karakterlánc szimmetrikus -e vagy sem:

// JavaScript program annak ellenőrzésére, hogy a karakterlánc szimmetrikus -e vagy sem
// Funkció annak ellenőrzésére, hogy a karakterlánc szimmetrikus -e vagy sem
függvény isSymmetrical (str) {
var midIndex;
var hossz = str.length;
// Ha a karakterlánc hossza páros
if (hossza % 2 == 0) {
midIndex = Math.floor (hossz/2);
}
// Ha a karakterlánc hossza páratlan
más {
midIndex = Math.floor (hossz/2) + 1;
}
var pointer1 = 0;
var pointer2 = középindex;
míg (mutató1if (str [mutató1] == str [mutató2]) {
mutató1 += 1;
mutató2 += 1;
} más {
return false;
}
}
return true;
}
Teszteset: 1
var str1 = "abab";
document.write ("String 1:" + str1 + "
");
if (isSymmetrical (str1)) {
document.write ("Igen, a megadott karakterlánc szimmetrikus" + "
");
} más {
document.write ("Nem, a megadott karakterlánc nem szimmetrikus" + "
");
}
Teszteset: 2
var str2 = "asszony";
document.write ("String 2:" + str2 + "
");
if (isSymmetrical (str2)) {
document.write ("Igen, a megadott karakterlánc szimmetrikus" + "
");
} más {
document.write ("Nem, a megadott karakterlánc nem szimmetrikus" + "
");
}
Teszteset: 3
var str3 = "madma";
document.write ("3. karakterlánc:" + str3 + "
");
if (isSymmetrical (str3)) {
document.write ("Igen, a megadott karakterlánc szimmetrikus" + "
");
} más {
document.write ("Nem, a megadott karakterlánc nem szimmetrikus" + "
");
}
Teszteset: 4
var str4 = "polgári";
document.write ("String 4:" + str4 + "
");
if (isSymmetrical (str4)) {
document.write ("Igen, a megadott karakterlánc szimmetrikus" + "
");
} más {
document.write ("Nem, a megadott karakterlánc nem szimmetrikus" + "
");
}
Teszteset: 5
var str5 = "khokho";
document.write ("String 5:" + str5 + "
");
if (isSymmetrical (str5)) {
document.write ("Igen, a megadott karakterlánc szimmetrikus" + "
");
} más {
document.write ("Nem, a megadott karakterlánc nem szimmetrikus" + "
");
}

Kimenet:

1. karakterlánc: abab
Igen, az adott karakterlánc szimmetrikus
2. karakterlánc: asszonyom
Nem, a megadott karakterlánc nem szimmetrikus
3. karakterlánc: madma
Igen, az adott karakterlánc szimmetrikus
4. karakterlánc: polgári
Nem, a megadott karakterlánc nem szimmetrikus
5. karakterlánc: khokho
Igen, az adott karakterlánc szimmetrikus

Összefüggő: Hogyan lehet megtalálni a leggyakrabban előforduló karaktert egy karakterláncban

Problémák megoldása karakterláncok alapján

A karakterláncok az interjúk programozásának egyik legfontosabb témája. Meg kell oldania néhány híres programozási problémát karakterláncok alapján, például ellenőrizze, hogy a karakterlánc palindrom -e, ellenőrizze ha két karakterlánc egymás anagrammája, keresse meg a karakterlánc leggyakrabban előforduló karakterét, fordítsa meg a karakterláncot, stb. ha teljesen fel akar készülni.

RészvényCsipogEmail
Hogyan lehet ellenőrizni, hogy a karakterlánc palindrom -e

A húrja palindrom? Függetlenül attól, hogy Python, C ++ vagy JavaScriptet használ -e, használja az alábbi algoritmusok egyikét.

Olvassa tovább

Kapcsolódó témák
  • Programozás
  • JavaScript
  • Piton
  • Kódolási oktatóanyagok
  • C Programozás
A szerzőről
Yuvraj Chandra (50 cikk megjelent)

Yuvraj egy számítástechnikai egyetemi hallgató a Delhi Egyetemen, Indiában. Szenvedélyesen foglalkozik a Full Stack webfejlesztéssel. Amikor nem ír, a különböző technológiák mélységét kutatja.

Bővebben: Yuvraj Chandra

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide