Autor: Yuvraj Chandra
zdieľamTweetEmail

C ++, Python, C alebo JavaScript: bez ohľadu na to, čo používate, použite tento algoritmus na určenie symetrických reťazcov.

Šnúrka sa považuje za symetrickú, ak sú obe jej polovice rovnaké. V tomto článku sa dozviete algoritmus na určenie, či je daný reťazec symetrický alebo nie. Dozviete sa tiež, ako implementovať tento algoritmus v najpopulárnejších programovacích jazykoch, ako sú C ++, Python, C a JavaScript.

Vyhlásenie o probléme

Dostali ste reťazec. Musíte zistiť, či je daný reťazec symetrický alebo nie.

Príklad 1: Nech str = "abab".

Uvedené je symetrické, pretože obe polovice reťazca sú rovnaké.

Výstup je teda „Áno, daný reťazec je symetrický“.

Príklad 2: Nech str = "madam".

Ak je dĺžka reťazca nepárna, stredný znak reťazca je ignorovaný. Preto 1. polovica = „ma“ a 2. polovica = „som“. Dve polovice nie sú rovnaké.

Výstup je teda „Nie, daný reťazec nie je symetrický“.

Príklad 3: Nech str = "madma".

instagram viewer

1. polovica = „ma“ a 2. polovica = „ma“. Obe polovice šnúrky sú rovnaké.

Výstup je teda „Áno, daný reťazec je symetrický“.

Algoritmus na určenie, či je daný reťazec symetrický alebo nie

Podľa nasledujúceho postupu môžete určiť, či je daný reťazec symetrický alebo nie:

  1. Nájdite dĺžku šnúrky.
  2. Nájdite midIndex reťazca.
    • Ak je dĺžka šnúrky párna, midIndex = dĺžka / 2.
    • Ak je dĺžka šnúrky nepárna, midIndex = (dĺžka / 2) + 1. V takom prípade je stredný znak reťazca pre porovnanie ignorovaný.
  3. Inicializujte dve premenné ukazovateľa ukazovateľ 1 a ukazovateľ2. ukazovateľ 1 uloží index prvého znaku (0) reťazca a ukazovateľ2 uloží index stredného znaku (midIndex) reťazca.
  4. Teraz porovnajte zodpovedajúce znaky oboch polovíc reťazca pomocou a zatiaľ čo slučka. Spustite a zatiaľ čo slučka do ukazovateľ 1.
  5. Porovnajte zodpovedajúce znaky v indexoch ukazovateľ 1 a ukazovateľ2.
  6. Ak sa nájde ktorýkoľvek zodpovedajúci znak odlišný, vráťte sa nepravdivé. A ak nenájdete podobné znaky, vráťte sa späť pravda.
  7. Nezabudnite tiež zvýšiť hodnotu ukazovateľ 1 a ukazovateľ2 v každej iterácii.

Program v C ++ na určenie, či je daný reťazec symetrický alebo nie

Ďalej je uvedený program C ++ na určenie, či je daný reťazec symetrický alebo nie:

// Program v C ++ na kontrolu, či je reťazec symetrický alebo nie
#include
pomocou priestoru názvov std;
// Funkcia na kontrolu, či je reťazec symetrický alebo nie
bool isSymetrical (string str)
{
int midIndex;
int dĺžka = str.length ();
// Ak je dĺžka reťazca párna
ak (dĺžka % 2 == 0)
{
midIndex = dĺžka/2;
}
// Ak je dĺžka reťazca nepárna
inak
{
midIndex = dĺžka/2 + 1;
}
int pointer1 = 0;
int pointer2 = midIndex;
while (ukazovateľ1{
if (str [pointer1] == str [pointer2])
{
ukazovateľ1 + = 1;
ukazovateľ2 + = 1;
}
inak
{
návrat nepravdivý;
}
}
návrat pravdivý;
}
// Kód vodiča
int main ()
{
// Testovací prípad: 1
reťazec str1 = "abab";
cout << "String 1:" << str1 << endl;
if (isSymetrical (str1))
{
cout << "Áno, daný reťazec je symetrický" << endl;
}
inak
{
cout << "Nie, daný reťazec nie je symetrický" << endl;
}
// Testovací prípad: 2
reťazec str2 = "madam";
cout << "String 2:" << str2 << endl;
if (isSymetrical (str2))
{
cout << "Áno, daný reťazec je symetrický" << endl;
}
inak
{
cout << "Nie, daný reťazec nie je symetrický" << endl;
}
// Testovací prípad: 3
reťazec str3 = "madma";
cout << "String 3:" << str3 << endl;
if (isSymetrical (str3))
{
cout << "Áno, daný reťazec je symetrický" << endl;
}
inak
{
cout << "Nie, daný reťazec nie je symetrický" << endl;
}
// Testovací prípad: 4
reťazec str4 = "občiansky";
cout << "String 4:" << str4 << endl;
if (isSymetrical (str4))
{
cout << "Áno, daný reťazec je symetrický" << endl;
}
inak
{
cout << "Nie, daný reťazec nie je symetrický" << endl;
}
// Testovací prípad: 5
reťazec str5 = "khokho";
cout << "String 5:" << str5 << endl;
if (isSymetrical (str5))
{
cout << "Áno, daný reťazec je symetrický" << endl;
}
inak
{
cout << "Nie, daný reťazec nie je symetrický" << endl;
}
návrat 0;
}

Výkon:

Reťazec 1: abab
Áno, daný reťazec je symetrický
Reťazec 2: madam
Nie, daný reťazec nie je symetrický
Reťazec 3: madma
Áno, daný reťazec je symetrický
Reťazec 4: občiansky
Nie, daný reťazec nie je symetrický
Reťazec 5: khokho
Áno, daný reťazec je symetrický

Súvisiace: Ako obrátiť reťazec v C ++, Python a JavaScript

Program Python na určenie, či je daný reťazec symetrický alebo nie

Nasleduje program Python, ktorý určuje, či je daný reťazec symetrický alebo nie:

# Program Python na kontrolu, či je reťazec symetrický alebo nie
# Funkcia na kontrolu, či je reťazec symetrický alebo nie
def isSymetrical (str):
midIndex = 0
dĺžka = len (str)
ak dĺžka%2 == 0:
midIndex = dĺžka // 2
inak:
midIndex = dĺžka // 2 + 1
ukazovateľ1 = 0
pointer2 = midIndex
zatiaľ čo ukazovateľ 1if (str [pointer1] == str [pointer2]):
ukazovateľ1 += 1
ukazovateľ2 += 1
inak:
návrat False
vrátiť True
# Testovací prípad: 1
str1 = "abab"
tlač ("Reťazec 1:", str1)
ak (jeSymetrické (str1)):
print („Áno, daný reťazec je symetrický“)
inak:
print („Nie, daný reťazec nie je symetrický“)
# Testovací prípad: 2
str2 = "madam"
tlač ("String 2:", str2)
ak (jeSymetrické (str2)):
print („Áno, daný reťazec je symetrický“)
inak:
print („Nie, daný reťazec nie je symetrický“)
# Testovací prípad: 3
str3 = "madma"
tlač ("String 3:", str3)
if (isSymetrical (str3)):
print („Áno, daný reťazec je symetrický“)
inak:
print („Nie, daný reťazec nie je symetrický“)
# Testovací prípad: 4
str4 = "občiansky"
tlač ("String 4:", str4)
ak (jeSymetrické (str4)):
print („Áno, daný reťazec je symetrický“)
inak:
print („Nie, daný reťazec nie je symetrický“)
# Testovací prípad: 5
str5 = "khokho"
tlač („String 5:“, str5)
ak (jeSymetrické (str5)):
print („Áno, daný reťazec je symetrický“)
inak:
print („Nie, daný reťazec nie je symetrický“)

Výkon:

Reťazec 1: abab
Áno, daný reťazec je symetrický
Reťazec 2: madam
Nie, daný reťazec nie je symetrický
Reťazec 3: madma
Áno, daný reťazec je symetrický
Reťazec 4: občiansky
Nie, daný reťazec nie je symetrický
Reťazec 5: khokho
Áno, daný reťazec je symetrický

Súvisiace: Učíš sa Python? Tu je návod, ako manipulovať so strunami

Program JavaScript na určenie, či je daný reťazec symetrický alebo nie

Nasleduje program JavaScript, ktorý určuje, či je daný reťazec symetrický alebo nie:

// Program JavaScript na kontrolu, či je reťazec symetrický alebo nie
// Funkcia na kontrolu, či je reťazec symetrický alebo nie
funkcia jeSymetrická (str) {
var midIndex;
var dĺžka = dĺžka str.
// Ak je dĺžka reťazca párna
if (dĺžka % 2 == 0) {
midIndex = matematická podlaha (dĺžka/2);
}
// Ak je dĺžka reťazca nepárna
inak {
midIndex = Math.floor (dĺžka / 2) + 1;
}
var ukazovateľ1 = 0;
var pointer2 = midIndex;
while (ukazovateľ1if (str [pointer1] == str [pointer2]) {
ukazovateľ1 + = 1;
ukazovateľ2 + = 1;
} else {
návrat nepravdivý;
}
}
návrat pravdivý;
}
// Testovací prípad: 1
var str1 = "abab";
document.write ("Reťazec 1:" + str1 + "
");
if (isSymetrical (str1)) {
document.write ("Áno, daný reťazec je symetrický" + "
");
} else {
document.write ("Nie, daný reťazec nie je symetrický" + "
");
}
// Testovací prípad: 2
var str2 = "madam";
document.write ("Reťazec 2:" + str2 + "
");
if (isSymetrical (str2)) {
document.write ("Áno, daný reťazec je symetrický" + "
");
} else {
document.write ("Nie, daný reťazec nie je symetrický" + "
");
}
// Testovací prípad: 3
var str3 = "madma";
document.write ("Reťazec 3:" + str3 + "
");
if (isSymetrical (str3)) {
document.write ("Áno, daný reťazec je symetrický" + "
");
} else {
document.write ("Nie, daný reťazec nie je symetrický" + "
");
}
// Testovací prípad: 4
var str4 = "občiansky";
document.write ("Reťazec 4:" + str4 + "
");
if (isSymetrical (str4)) {
document.write ("Áno, daný reťazec je symetrický" + "
");
} else {
document.write ("Nie, daný reťazec nie je symetrický" + "
");
}
// Testovací prípad: 5
var str5 = "khokho";
document.write ("Reťazec 5:" + str5 + "
");
if (isSymetrical (str5)) {
document.write ("Áno, daný reťazec je symetrický" + "
");
} else {
document.write ("Nie, daný reťazec nie je symetrický" + "
");
}

Výkon:

Reťazec 1: abab
Áno, daný reťazec je symetrický
Reťazec 2: madam
Nie, daný reťazec nie je symetrický
Reťazec 3: madma
Áno, daný reťazec je symetrický
Reťazec 4: občiansky
Nie, daný reťazec nie je symetrický
Reťazec 5: khokho
Áno, daný reťazec je symetrický

Súvisiace: Ako nájsť najčastejšie sa vyskytujúci znak v reťazci

Riešenie problémov na základe reťazcov

Reťazce sú jednou z najdôležitejších tém pre rozhovory s programovaním. Musíte vyriešiť niektoré známe problémy s programovaním založené na reťazcoch, ako napríklad skontrolovať, či je reťazec palindróm, skontrolovať ak sú dva reťazce vzájomne anagramy, vyhľadajte najčastejšie sa vyskytujúci znak v reťazci, obráťte reťazec, atď. ak hľadáte úplnú pripravenosť.

zdieľamTweetEmail
Ako skontrolovať, či je reťazec palindróm

Je váš reťazec palindróm? Či už používate Python, C ++ alebo JavaScript, zistíte to pomocou jedného z týchto algoritmov.

Čítajte ďalej

Súvisiace témy
  • Programovanie
  • JavaScript
  • Python
  • Výukové programy pre kódovanie
  • C Programovanie
O autorovi
Yuvraj Chandra (50 publikovaných článkov)

Yuvraj je študentom informatiky na univerzite v Dillí v Indii. Je nadšený pre vývoj webových aplikácií Full Stack. Keď nepíše, skúma hĺbku rôznych technológií.

Viac od Yuvraja Chandru

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber