Autor: Yuvraj Chandra
PodíltweetE-mailem

C ++, Python, C nebo JavaScript: bez ohledu na to, co používáte, použijte tento algoritmus k určení symetrických řetězců.

Řetězec je považován za symetrický, pokud jsou obě jeho poloviny stejné. V tomto článku se naučíte algoritmus k určení, zda je daný řetězec symetrický nebo ne. Dozvíte se také, jak implementovat tento algoritmus v nejpopulárnějších programovacích jazycích, jako jsou C ++, Python, C a JavaScript.

Problémové prohlášení

Dostali jste řetězec. Musíte určit, zda je daný řetězec symetrický nebo ne.

Příklad 1: Nechť str = "abab".

Uvedené je symetrické, protože obě poloviny řetězce jsou stejné.

Výstup je tedy „Ano, daný řetězec je symetrický“.

Příklad 2: Nechť str = "madam".

Pokud je délka řetězce lichá, střední znak řetězce je ignorován. Proto 1. polovina = „ma“ a 2. polovina = „jsem“. Obě poloviny nejsou stejné.

Výstup je tedy „Ne, daný řetězec není symetrický“.

Příklad 3: Nechť str = "madma".

instagram viewer

1. polovina = „ma“ a 2. polovina = „ma“. Obě poloviny řetězce jsou stejné.

Výstup je tedy „Ano, daný řetězec je symetrický“.

Algoritmus k určení, zda je daný řetězec symetrický nebo ne

Podle následujícího postupu můžete určit, zda je daný řetězec symetrický nebo ne:

  1. Najděte délku řetězce.
  2. Najděte midIndex řetězce.
    • Pokud je délka řetězce sudá, midIndex = délka / 2.
    • Pokud je délka řetězce lichá, midIndex = (délka / 2) + 1. V tomto případě je prostřední znak řetězce pro srovnání ignorován.
  3. Inicializujte dvě proměnné ukazatele ukazatel1 a ukazatel2. ukazatel1 uloží index prvního znaku (0) řetězce a ukazatel2 uloží index prostředního znaku (midIndex) řetězce.
  4. Nyní porovnejte odpovídající znaky obou polovin řetězce pomocí a zatímco smyčka. Spustit a zatímco smyčka do ukazatel1.
  5. Porovnejte odpovídající znaky v indexech ukazatel1 a ukazatel2.
  6. Pokud je odpovídající znak shledán odlišným, vraťte se Nepravdivé. A pokud nejsou nalezeny žádné odpovídající znaky odlišné, vraťte se skutečný.
  7. Nezapomeňte také zvýšit hodnotu ukazatel1 a ukazatel2 v každé iteraci.

Program C ++ k určení, zda je daný řetězec symetrický nebo ne

Níže je program C ++ k určení, zda je daný řetězec symetrický nebo ne:

// Program C ++ ke kontrole, zda je řetězec symetrický nebo ne
#zahrnout
pomocí jmenného prostoru std;
// Funkce pro kontrolu, zda je řetězec symetrický nebo ne
bool isSymetrical (string str)
{
int midIndex;
int délka = str.length ();
// Pokud je délka řetězce sudá
if (délka% 2 == 0)
{
midIndex = délka / 2;
}
// Pokud je délka řetězce lichá
jiný
{
midIndex = délka / 2 + 1;
}
int pointer1 = 0;
int pointer2 = midIndex;
while (ukazatel1{
if (str [pointer1] == str [pointer2])
{
ukazatel1 += 1;
ukazatel2 += 1;
}
jiný
{
návrat false;
}
}
return true;
}
// Kód ovladače
int main ()
{
// Testovací případ: 1
řetězec str1 = "abab";
cout << "Řetězec 1:" << str1 << endl;
if (isSymetrical (str1))
{
cout << "Ano, daný řetězec je symetrický" << endl;
}
jiný
{
cout << "Ne, daný řetězec není symetrický" << endl;
}
// Testovací případ: 2
řetězec str2 = "madam";
cout << "Řetězec 2:" << str2 << endl;
if (isSymetrical (str2))
{
cout << "Ano, daný řetězec je symetrický" << endl;
}
jiný
{
cout << "Ne, daný řetězec není symetrický" << endl;
}
// Testovací případ: 3
řetězec str3 = "madma";
cout << "Řetězec 3:" << str3 << endl;
if (isSymetrical (str3))
{
cout << "Ano, daný řetězec je symetrický" << endl;
}
jiný
{
cout << "Ne, daný řetězec není symetrický" << endl;
}
// Testovací případ: 4
řetězec str4 = "občanský";
cout << "Řetězec 4:" << str4 << endl;
if (isSymetrical (str4))
{
cout << "Ano, daný řetězec je symetrický" << endl;
}
jiný
{
cout << "Ne, daný řetězec není symetrický" << endl;
}
// Testovací případ: 5
řetězec str5 = "khokho";
cout << "Řetězec 5:" << str5 << endl;
if (isSymetrical (str5))
{
cout << "Ano, daný řetězec je symetrický" << endl;
}
jiný
{
cout << "Ne, daný řetězec není symetrický" << endl;
}
návrat 0;
}

Výstup:

Řetězec 1: abab
Ano, daný řetězec je symetrický
Řetězec 2: madam
Ne, daný řetězec není symetrický
Řetězec 3: madma
Ano, daný řetězec je symetrický
Řetězec 4: občanský
Ne, daný řetězec není symetrický
Řetězec 5: khokho
Ano, daný řetězec je symetrický

Příbuzný: Jak převrátit řetězec v C ++, Pythonu a JavaScriptu

Program v Pythonu k určení, zda je daný řetězec symetrický nebo ne

Níže je program Python, který určuje, zda je daný řetězec symetrický nebo ne:

# Program v Pythonu ke kontrole, zda je řetězec symetrický nebo ne
# Funkce pro kontrolu, zda je řetězec symetrický nebo ne
def isSymetrical (str):
midIndex = 0
délka = len (str)
pokud délka% 2 == 0:
midIndex = délka // 2
jiný:
midIndex = délka // 2 + 1
pointer1 = 0
pointer2 = midIndex
zatímco ukazatel1if (str [pointer1] == str [pointer2]):
pointer1 + = 1
pointer2 + = 1
jiný:
vrátit False
vrátit True
# Testovací případ: 1
str1 = "abab"
print ("Řetězec 1:", str1)
if (isSymmetrical (str1)):
print ("Ano, daný řetězec je symetrický")
jiný:
print ("Ne, daný řetězec není symetrický")
# Testovací případ: 2
str2 = "madam"
print ("Řetězec 2:", str2)
if (isSymmetrical (str2)):
print ("Ano, daný řetězec je symetrický")
jiný:
print ("Ne, daný řetězec není symetrický")
# Testovací případ: 3
str3 = "madma"
print ("Řetězec 3:", str3)
if (isSymetrical (str3)):
print ("Ano, daný řetězec je symetrický")
jiný:
print ("Ne, daný řetězec není symetrický")
# Testovací případ: 4
str4 = "občanský"
print ("Řetězec 4:", str4)
if (isSymetrical (str4)):
print ("Ano, daný řetězec je symetrický")
jiný:
print ("Ne, daný řetězec není symetrický")
# Testovací případ: 5
str5 = "khokho"
print ("Řetězec 5:", str5)
if (isSymetrical (str5)):
print ("Ano, daný řetězec je symetrický")
jiný:
print ("Ne, daný řetězec není symetrický")

Výstup:

Řetězec 1: abab
Ano, daný řetězec je symetrický
Řetězec 2: madam
Ne, daný řetězec není symetrický
Řetězec 3: madma
Ano, daný řetězec je symetrický
Řetězec 4: občanský
Ne, daný řetězec není symetrický
Řetězec 5: khokho
Ano, daný řetězec je symetrický

Příbuzný: Učit se Python? Zde je návod, jak manipulovat s řetězci

Program JavaScript k určení, zda je daný řetězec symetrický nebo ne

Níže je uveden program JavaScript, který určuje, zda je daný řetězec symetrický nebo ne:

// JavaScriptový program ke kontrole, zda je řetězec symetrický nebo ne
// Funkce pro kontrolu, zda je řetězec symetrický nebo ne
funkce jeSymetrická (str) {
var midIndex;
var length = str.length;
// Pokud je délka řetězce sudá
if (délka % 2 == 0) {
midIndex = Math.floor (délka/2);
}
// Pokud je délka řetězce lichá
else {
midIndex = matematická podlaha (délka/2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
while (ukazatel1if (str [pointer1] == str [pointer2]) {
ukazatel1 += 1;
ukazatel2 += 1;
} else {
návrat false;
}
}
return true;
}
// Testovací případ: 1
var str1 = "abab";
document.write ("Řetězec 1:" + str1 + "
");
if (isSymetric (str1)) {
document.write ("Ano, daný řetězec je symetrický" + "
");
} else {
document.write ("Ne, daný řetězec není symetrický" + "
");
}
// Testovací případ: 2
var str2 = "madam";
document.write ("Řetězec 2:" + str2 + "
");
if (isSymetric (str2)) {
document.write ("Ano, daný řetězec je symetrický" + "
");
} else {
document.write ("Ne, daný řetězec není symetrický" + "
");
}
// Testovací případ: 3
var str3 = "madma";
document.write ("Řetězec 3:" + str3 + "
");
if (isSymetrical (str3)) {
document.write ("Ano, daný řetězec je symetrický" + "
");
} else {
document.write ("Ne, daný řetězec není symetrický" + "
");
}
// Testovací případ: 4
var str4 = "občanský";
document.write ("Řetězec 4:" + str4 + "
");
if (isSymetrical (str4)) {
document.write ("Ano, daný řetězec je symetrický" + "
");
} else {
document.write ("Ne, daný řetězec není symetrický" + "
");
}
// Testovací případ: 5
var str5 = "khokho";
document.write ("Řetězec 5:" + str5 + "
");
if (isSymetric (str5)) {
document.write ("Ano, daný řetězec je symetrický" + "
");
} else {
document.write ("Ne, daný řetězec není symetrický" + "
");
}

Výstup:

Řetězec 1: abab
Ano, daný řetězec je symetrický
Řetězec 2: madam
Ne, daný řetězec není symetrický
Řetězec 3: madma
Ano, daný řetězec je symetrický
Řetězec 4: občanský
Ne, daný řetězec není symetrický
Řetězec 5: khokho
Ano, daný řetězec je symetrický

Příbuzný: Jak najít nejčastěji se vyskytující znak v řetězci

Řešení problémů na základě řetězců

Řetězce jsou jedním z nejdůležitějších témat pro programování rozhovorů. Musíte vyřešit některé slavné problémy s programováním na základě řetězců, jako je kontrola, zda je řetězec palindrom, zkontrolujte jsou -li dva řetězce navzájem přesmyčky, najděte nejčastěji se vyskytující znak v řetězci, obraťte řetězec, atd. pokud chcete být plně připraveni.

PodíltweetE-mailem
Jak zkontrolovat, zda je řetězec palindrom

Je váš řetězec palindrom? Ať už používáte Python, C ++ nebo JavaScript, zjistěte to pomocí jednoho z těchto algoritmů.

Číst dále

Související témata
  • Programování
  • JavaScript
  • Krajta
  • Návody na kódování
  • C Programování
O autorovi
Yuvraj Chandra (50 článků publikováno)

Yuvraj je studentem informatiky na univerzitě v Dillí v Indii. Je nadšený pro webový vývoj Full Stack. Když nepíše, zkoumá hloubku různých technologií.

Více od Yuvraj Chandra

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru