By Yuvraj Chandra
UdziałĆwierkaćE-mail

C++, Python, C lub JavaScript: bez względu na to, którego używasz, użyj tego algorytmu do określenia ciągów symetrycznych.

Mówi się, że struna jest symetryczna, jeśli obie połówki struny są takie same. W tym artykule poznasz algorytm określający, czy dany ciąg jest symetryczny, czy nie. Dowiesz się również, jak zaimplementować ten algorytm w najpopularniejszych językach programowania, takich jak C++, Python, C i JavaScript.

Oświadczenie o problemie

Dostajesz sznurek. Musisz określić, czy dany ciąg jest symetryczny, czy nie.

Przykład 1: Niech str = "abab".

Podane jest symetryczne, ponieważ obie połówki struny są takie same.

Wynik to „Tak, podany ciąg jest symetryczny”.

Przykład 2: Niech str = "pani".

Jeśli długość ciągu jest nieparzysta, środkowy znak ciągu jest ignorowany. Dlatego pierwsza połowa = „ma”, a druga połowa = „jestem”. Dwie połówki nie są takie same.

Wynik to „Nie, dany ciąg nie jest symetryczny”.

instagram viewer

Przykład 3: Niech str = "szalenie".

1. połowa = „ma” i 2. połowa = „ma”. Obie połówki sznurka są takie same.

Wynik to „Tak, podany ciąg jest symetryczny”.

Algorytm do określenia, czy dany ciąg jest symetryczny, czy nie

Możesz określić, czy dany ciąg jest symetryczny, czy nie, postępując zgodnie z poniższym podejściem:

  1. Znajdź długość sznurka.
  2. Znajdź midIndex ciągu.
    • Jeśli długość sznurka jest parzysta, midIndex = długość/2.
    • Jeśli długość ciągu jest nieparzysta, midIndex = (długość/2) + 1. W takim przypadku środkowy znak ciągu jest ignorowany do porównania.
  3. Zainicjuj dwie zmienne wskaźnikowe wskaźnik1 oraz wskaźnik2. wskaźnik1 przechowa indeks pierwszego znaku (0) ciągu i wskaźnik2 przechowa indeks środkowego znaku (midIndex) ciągu.
  4. Teraz porównaj odpowiednie znaki obu połówek ciągu za pomocą a podczas pętla. Uruchom podczas powtarzaj dopóki wskaźnik1.
  5. Porównaj odpowiednie znaki w indeksach wskaźnik1 oraz wskaźnik2.
  6. Jeśli jakikolwiek odpowiadający znak okaże się niepodobny, zwróć fałszywe. A jeśli nie znaleziono żadnych odpowiadających im znaków, wróć prawda.
  7. Pamiętaj też o zwiększeniu wartości wskaźnik1 oraz wskaźnik2 w każdej iteracji.

Program C++ do określenia, czy dany ciąg jest symetryczny, czy nie

Poniżej znajduje się program C++ do określenia, czy dany ciąg jest symetryczny, czy nie:

// program w C++ sprawdzający, czy ciąg jest symetryczny, czy nie
#zawierać
przy użyciu standardowej przestrzeni nazw;
// Funkcja sprawdzająca, czy ciąg jest symetryczny, czy nie
bool isSymmetrical (string string)
{
int midIndex;
int length = str.length();
// Jeśli długość ciągu jest parzysta
if (długość % 2 ​​== 0)
{
midIndex = długość/2;
}
// Jeśli długość ciągu jest nieparzysta
w przeciwnym razie
{
midIndex = długość/2 + 1;
}
int wskaźnik1 = 0;
int wskaźnik2 = midIndex;
podczas (wskaźnik1{
if (str[wskaźnik1] == str[wskaźnik2])
{
wskaźnik1 += 1;
wskaźnik2 += 1;
}
w przeciwnym razie
{
zwróć fałsz;
}
}
zwróć prawdę;
}
// Kod kierowcy
int main()
{
// Przypadek testowy: 1
ciąg str1 = "abab";
cout << "Ciąg 1: " << str1 << endl;
if (isSymetrical (str1))
{
cout << "Tak, podany łańcuch jest symetryczny" << endl;
}
w przeciwnym razie
{
cout << "Nie, podany łańcuch nie jest symetryczny" << endl;
}
// Przypadek testowy: 2
ciąg str2 = "pani";
cout << "Ciąg 2: " << str2 << endl;
if (isSymetrical (str2))
{
cout << "Tak, podany łańcuch jest symetryczny" << endl;
}
w przeciwnym razie
{
cout << "Nie, podany łańcuch nie jest symetryczny" << endl;
}
// Przypadek testowy: 3
ciąg str3 = "szalony";
cout << "Ciąg 3: " << str3 << endl;
if (isSymetrical (str3))
{
cout << "Tak, podany łańcuch jest symetryczny" << endl;
}
w przeciwnym razie
{
cout << "Nie, podany łańcuch nie jest symetryczny" << endl;
}
// Przypadek testowy: 4
ciąg str4 = "obywatelski";
cout << "Ciąg 4: " << str4 << endl;
if (isSymetrical (str4))
{
cout << "Tak, podany łańcuch jest symetryczny" << endl;
}
w przeciwnym razie
{
cout << "Nie, podany łańcuch nie jest symetryczny" << endl;
}
// Przypadek testowy: 5
ciąg str5 = "khokho";
cout << "Ciąg 5: " << str5 << endl;
if (isSymetrical (str5))
{
cout << "Tak, podany łańcuch jest symetryczny" << endl;
}
w przeciwnym razie
{
cout << "Nie, podany łańcuch nie jest symetryczny" << endl;
}
zwróć 0;
}

Wyjście:

Ciąg 1: abab
Tak, podany ciąg jest symetryczny
Ciąg 2: proszę pani
Nie, podany ciąg nie jest symetryczny
Ciąg 3: szaleństwo
Tak, podany ciąg jest symetryczny
Ciąg 4: obywatelski
Nie, podany ciąg nie jest symetryczny
Ciąg 5: khokho
Tak, podany ciąg jest symetryczny

Związane z: Jak odwrócić ciąg znaków w C++, Pythonie i JavaScript

Program Pythona do określania, czy dany ciąg jest symetryczny, czy nie

Poniżej znajduje się program Pythona do określenia, czy dany ciąg jest symetryczny, czy nie:

# Program w Pythonie do sprawdzania, czy łańcuch jest symetryczny, czy nie
# Funkcja sprawdzająca, czy ciąg jest symetryczny, czy nie
def isSymetryczna (str):
indeks środkowy = 0
długość = len (str)
jeśli długość%2 == 0:
midIndex = długość//2
w przeciwnym razie:
midIndex = długość//2 + 1
wskaźnik1 = 0
wskaźnik2 = midIndex
podczas gdy wskaźnik1if (str[wskaźnik1] == str[wskaźnik2]):
wskaźnik1 += 1
wskaźnik2 += 1
w przeciwnym razie:
powrót Fałsz
zwróć Prawda
# Przypadek testowy: 1
str1 = "bab"
print("Ciąg 1:", ciąg1)
if (isSymetrical (str1)):
print("Tak, podany łańcuch jest symetryczny")
w przeciwnym razie:
print("Nie, podany ciąg nie jest symetryczny")
# Przypadek testowy: 2
str2 = "pani"
print("Ciąg 2:", str2)
if (isSymetrical (str2)):
print("Tak, podany łańcuch jest symetryczny")
w przeciwnym razie:
print("Nie, podany ciąg nie jest symetryczny")
# Przypadek testowy: 3
str3 = "szalenie"
print("Ciąg 3:", str3)
if (isSymetrical (str3)):
print("Tak, podany łańcuch jest symetryczny")
w przeciwnym razie:
print("Nie, podany ciąg nie jest symetryczny")
# Przypadek testowy: 4
str4 = "obywatelski"
print("Ciąg 4:", str4)
if (isSymetrical (str4)):
print("Tak, podany łańcuch jest symetryczny")
w przeciwnym razie:
print("Nie, podany ciąg nie jest symetryczny")
# Przypadek testowy: 5
str5 = "khokho"
print("Ciąg 5:", ciąg5)
if (isSymetrical (str5)):
print("Tak, podany łańcuch jest symetryczny")
w przeciwnym razie:
print("Nie, podany ciąg nie jest symetryczny")

Wyjście:

Ciąg 1: abab
Tak, podany ciąg jest symetryczny
Ciąg 2: proszę pani
Nie, podany ciąg nie jest symetryczny
Ciąg 3: szaleństwo
Tak, podany ciąg jest symetryczny
Ciąg 4: obywatelski
Nie, podany ciąg nie jest symetryczny
Ciąg 5: khokho
Tak, podany ciąg jest symetryczny

Związane z: Uczysz się Pythona? Oto jak manipulować strunami

Program JavaScript do określania, czy dany ciąg jest symetryczny, czy nie

Poniżej znajduje się program JavaScript do określenia, czy dany ciąg jest symetryczny, czy nie:

// program JavaScript do sprawdzania, czy ciąg jest symetryczny, czy nie
// Funkcja sprawdzająca, czy ciąg jest symetryczny, czy nie
funkcja jest symetryczna (str) {
var midIndex;
var length = str.length;
// Jeśli długość ciągu jest parzysta
if (długość % 2 ​​== 0) {
midIndex = Math.floor (długość/2);
}
// Jeśli długość ciągu jest nieparzysta
w przeciwnym razie {
midIndex = Math.floor (długość/2) + 1;
}
var wskaźnik1 = 0;
var wskaźnik2 = midIndex;
podczas (wskaźnik1if (str[wskaźnik1] == str[wskaźnik2]) {
wskaźnik1 += 1;
wskaźnik2 += 1;
} w przeciwnym razie {
zwróć fałsz;
}
}
zwróć prawdę;
}
// Przypadek testowy: 1
var str1 = "abab";
document.write("Ciąg 1: " + str1 + "
");
if (isSymetrical (str1)) {
document.write("Tak, podany ciąg jest symetryczny" + "
");
} w przeciwnym razie {
document.write("Nie, podany ciąg nie jest symetryczny" + "
");
}
// Przypadek testowy: 2
var str2 = "pani";
document.write("Ciąg 2: " + str2 + "
");
if (isSymmetrical (str2)) {
document.write("Tak, podany ciąg jest symetryczny" + "
");
} w przeciwnym razie {
document.write("Nie, podany ciąg nie jest symetryczny" + "
");
}
// Przypadek testowy: 3
var str3 = "szalony";
document.write("Ciąg 3: " + str3 + "
");
if (isSymetryczna (str3)) {
document.write("Tak, podany ciąg jest symetryczny" + "
");
} w przeciwnym razie {
document.write("Nie, podany ciąg nie jest symetryczny" + "
");
}
// Przypadek testowy: 4
var str4 = "obywatelski";
document.write("Ciąg 4: " + str4 + "
");
if (isSymetryczna (str4)) {
document.write("Tak, podany ciąg jest symetryczny" + "
");
} w przeciwnym razie {
document.write("Nie, podany ciąg nie jest symetryczny" + "
");
}
// Przypadek testowy: 5
var str5 = "khokho";
document.write("Ciąg 5: " + str5 + "
");
if (isSymetryczna (str5)) {
document.write("Tak, podany ciąg jest symetryczny" + "
");
} w przeciwnym razie {
document.write("Nie, podany ciąg nie jest symetryczny" + "
");
}

Wyjście:

Ciąg 1: abab
Tak, podany ciąg jest symetryczny
Ciąg 2: proszę pani
Nie, podany ciąg nie jest symetryczny
Ciąg 3: szaleństwo
Tak, podany ciąg jest symetryczny
Ciąg 4: obywatelski
Nie, podany ciąg nie jest symetryczny
Ciąg 5: khokho
Tak, podany ciąg jest symetryczny

Związane z: Jak znaleźć najczęściej występujący znak w ciągu?

Rozwiązuj problemy na podstawie ciągów

Struny to jeden z najważniejszych tematów wywiadów programistycznych. Musisz rozwiązać niektóre ze znanych problemów programistycznych opartych na ciągach znaków, takich jak sprawdź, czy ciąg jest palindromem, sprawdź jeśli dwa ciągi są anagramami siebie nawzajem, znajdź najczęściej występujący znak w ciągu, odwróć ciąg, itp. jeśli chcesz być w pełni przygotowany.

UdziałĆwierkaćE-mail
Jak sprawdzić, czy struna jest palindromem?

Czy twój sznurek to palindrom? Niezależnie od tego, czy używasz Pythona, C++, czy JavaScript, użyj jednego z tych algorytmów, aby się dowiedzieć.

Czytaj dalej

Powiązane tematy
  • Programowanie
  • JavaScript
  • Pyton
  • Poradniki kodowania
  • Programowanie C
O autorze
Yuvraj Chandra (50 opublikowanych artykułów)

Yuvraj jest studentem informatyki na Uniwersytecie w Delhi w Indiach. Jest pasjonatem Full Stack Web Development. Kiedy nie pisze, bada głębię różnych technologii.

Więcej od Yuvraja Chandra

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować