Cómo comprobar si una cadena es simétrica con la programación

Se dice que una cuerda es simétrica si ambas mitades de la cuerda son iguales. En este artículo, aprenderá un algoritmo para determinar si una cadena dada es simétrica o no. También aprenderá a implementar este algoritmo en los lenguajes de programación más populares como C ++, Python, C y JavaScript.

Planteamiento del problema

Te dan una cuerda. Debe determinar si la cadena dada es simétrica o no.

Ejemplo 1 : Sea str = "abab".

Lo dado es simétrico ya que ambas mitades de la cuerda son iguales.

Por lo tanto, la salida es "Sí, la cadena dada es simétrica".

Ejemplo 2 : Sea str = "madam".

Si la longitud de la cadena es impar, se ignora el carácter del medio de la cadena. Por lo tanto, 1ª mitad = "ma" y 2ª mitad = "am". Las dos mitades no son iguales.

Por lo tanto, la salida es "No, la cadena dada no es simétrica".

Ejemplo 3 : Sea str = "madma".

1ª mitad = "ma" y 2ª mitad = "ma". Ambas mitades de la cuerda son iguales.

Por lo tanto, la salida es "Sí, la cadena dada es simétrica".

Algoritmo para determinar si una cadena dada es simétrica o no

Puede determinar si una cadena dada es simétrica o no siguiendo el enfoque a continuación:

  1. Calcula la longitud de la cuerda.
  2. Encuentra el midIndex de la cadena.
    • Si la longitud de la cadena es par, midIndex = length / 2 .
    • Si la longitud de la cadena es impar, midIndex = (length / 2) + 1 . En este caso, el carácter del medio de la cadena se ignora para comparar.
  3. Inicialice dos variables de puntero pointer1 y pointer2 . pointer1 almacenará el índice del primer carácter (0) de la cadena y pointer2 almacenará el índice del carácter intermedio (midIndex) de la cadena.
  4. Ahora compare los caracteres correspondientes de las dos mitades de la cadena mediante un bucle while. Ejecutar un bucle while hasta pointer1 <midIndex y pointer2 <lengthOfString.
  5. Compare los caracteres correspondientes en los índices pointer1 y pointer2 .
  6. Si algún carácter correspondiente se encuentra diferente, devuelva falso . Y si no se encuentran caracteres correspondientes diferentes, devuelva verdadero .
  7. Además, asegúrese de incrementar el valor de pointer1 y pointer2 en cada iteración.

Programa C ++ para determinar si una cadena dada es simétrica o no

A continuación se muestra el programa C ++ para determinar si una cadena dada es simétrica o no:

 // C++ program to check whether the string is symmetrical or not
#include <iostream>
using namespace std;
// Function to check whether the string is symmetrical or not
bool isSymmetrical(string str)
{
int midIndex;
int length = str.length();
// If the length of string is even
if (length % 2 == 0)
{
midIndex = length/2;
}
// If the length of string is odd
else
{
midIndex = length/2 + 1;
}
int pointer1 = 0;
int pointer2 = midIndex;
while(pointer1<midIndex && pointer2<length)
{
if(str[pointer1] == str[pointer2])
{
pointer1 += 1;
pointer2 += 1;
}
else
{
return false;
}
}
return true;
}
// Driver Code
int main()
{
// Test case: 1
string str1 = "abab";
cout << "String 1: " << str1 << endl;
if (isSymmetrical(str1))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 2
string str2 = "madam";
cout << "String 2: " << str2 << endl;
if (isSymmetrical(str2))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 3
string str3 = "madma";
cout << "String 3: " << str3 << endl;
if (isSymmetrical(str3))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 4
string str4 = "civic";
cout << "String 4: " << str4 << endl;
if (isSymmetrical(str4))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 5
string str5 = "khokho";
cout << "String 5: " << str5 << endl;
if (isSymmetrical(str5))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
return 0;
}

Producción:

 String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical

Relacionado Cómo invertir una cadena en C ++, Python y JavaScript

Programa de Python para determinar si una cadena dada es simétrica o no

A continuación se muestra el programa de Python para determinar si una cadena dada es simétrica o no:

 # Python program to check whether the string is symmetrical or not
# Function to check whether the string is symmetrical or not
def isSymmetrical(str):
midIndex = 0
length = len(str)
if length%2 == 0:
midIndex = length//2
else:
midIndex = length//2 + 1
pointer1 = 0
pointer2 = midIndex
while pointer1<midIndex and pointer2<length:
if (str[pointer1] == str[pointer2]):
pointer1 += 1
pointer2 += 1
else:
return False
return True

# Test case: 1
str1 = "abab"
print("String 1:", str1)
if (isSymmetrical(str1)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 2
str2 = "madam"
print("String 2:", str2)
if (isSymmetrical(str2)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 3
str3 = "madma"
print("String 3:", str3)
if (isSymmetrical(str3)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 4
str4 = "civic"
print("String 4:", str4)
if (isSymmetrical(str4)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 5
str5 = "khokho"
print("String 5:", str5)
if (isSymmetrical(str5)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")

Producción:

 String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical

Relacionado: ¿ Aprender Python? Aquí se explica cómo manipular cadenas

Programa JavaScript para determinar si una cadena dada es simétrica o no

A continuación se muestra el programa JavaScript para determinar si una cadena dada es simétrica o no:

 // JavaScript program to check whether the string is symmetrical or not
// Function to check whether the string is symmetrical or not
function isSymmetrical(str) {
var midIndex;
var length = str.length;
// If the length of string is even
if (length % 2 == 0) {
midIndex = Math.floor(length/2);
}
// If the length of string is odd
else {
midIndex = Math.floor(length/2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
while(pointer1<midIndex && pointer2<length) {
if(str[pointer1] == str[pointer2]) {
pointer1 += 1;
pointer2 += 1;
} else {
return false;
}
}
return true;
}

// Test case: 1
var str1 = "abab";
document.write("String 1: " + str1 + "<br>");
if (isSymmetrical(str1)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 2
var str2 = "madam";
document.write("String 2: " + str2 + "<br>");
if (isSymmetrical(str2)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 3
var str3 = "madma";
document.write("String 3: " + str3 + "<br>");
if (isSymmetrical(str3)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 4
var str4 = "civic";
document.write("String 4: " + str4 + "<br>");
if (isSymmetrical(str4)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 5
var str5 = "khokho";
document.write("String 5: " + str5 + "<br>");
if (isSymmetrical(str5)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}

Producción:

 String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical

Relacionado: Cómo encontrar el carácter que ocurre con más frecuencia en una cadena

Resolver problemas basados ​​en cadenas

Las cadenas son uno de los temas más importantes para programar entrevistas. Debe resolver algunos de los famosos problemas de programación basados ​​en cadenas, como verificar si una cadena es un palíndromo, verificar si dos cadenas son anagramas entre sí, encontrar el carácter que aparece con más frecuencia en una cadena, invertir una cadena, etc. si ' Estoy buscando estar completamente preparado.