Por Yuvraj Chandra
CuotaPíoCorreo electrónico

C ++, Python, C o JavaScript: no importa cuál use, use este algoritmo para determinar cadenas simétricas.

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 = "señora".

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".

instagram viewer

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 cuerda es par, midIndex = longitud / 2.
    • Si la longitud de la cuerda es impar, midIndex = (longitud / 2) + 1. En este caso, el carácter del medio de la cadena se ignora para comparar.
  3. Inicializar 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 ambas mitades de la cadena usando un tiempo lazo. Ejecutar un tiempo bucle hasta pointer1.
  5. Compare los caracteres correspondientes en los índices pointer1 y pointer2.
  6. Si algún carácter correspondiente se encuentra diferente, regrese falso. Y si no se encuentran caracteres correspondientes diferentes, regrese cierto.
  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:

// Programa C ++ para comprobar si la cadena es simétrica o no
#incluir
usando el espacio de nombres std;
// Función para comprobar si la cadena es simétrica o no
bool isSymmetrical (cadena str)
{
int midIndex;
int longitud = str.length ();
// Si la longitud de la cadena es par
si (longitud% 2 == 0)
{
midIndex = longitud / 2;
}
// Si la longitud de la cadena es impar
demás
{
midIndex = longitud / 2 + 1;
}
int pointer1 = 0;
int pointer2 = midIndex;
while (pointer1{
if (str [pointer1] == str [pointer2])
{
puntero1 + = 1;
puntero2 + = 1;
}
demás
{
falso retorno;
}
}
devuelve verdadero;
}
// Código del conductor
int main ()
{
// Caso de prueba: 1
string str1 = "abab";
cout << "Cadena 1:" << str1 << endl;
si (es simétrico (str1))
{
cout << "Sí, la cadena dada es simétrica" ​​<< endl;
}
demás
{
cout << "No, la cadena dada no es simétrica" ​​<< endl;
}
// Caso de prueba: 2
string str2 = "señora";
cout << "Cadena 2:" << str2 << endl;
si (es simétrico (str2))
{
cout << "Sí, la cadena dada es simétrica" ​​<< endl;
}
demás
{
cout << "No, la cadena dada no es simétrica" ​​<< endl;
}
// Caso de prueba: 3
string str3 = "madma";
cout << "Cadena 3:" << str3 << endl;
si (es simétrico (str3))
{
cout << "Sí, la cadena dada es simétrica" ​​<< endl;
}
demás
{
cout << "No, la cadena dada no es simétrica" ​​<< endl;
}
// Caso de prueba: 4
string str4 = "cívico";
cout << "Cadena 4:" << str4 << endl;
si (es simétrico (str4))
{
cout << "Sí, la cadena dada es simétrica" ​​<< endl;
}
demás
{
cout << "No, la cadena dada no es simétrica" ​​<< endl;
}
// Caso de prueba: 5
string str5 = "khokho";
cout << "Cadena 5:" << str5 << endl;
si (es simétrico (str5))
{
cout << "Sí, la cadena dada es simétrica" ​​<< endl;
}
demás
{
cout << "No, la cadena dada no es simétrica" ​​<< endl;
}
return 0;
}

Producción:

Cadena 1: abab
Sí, la cuerda dada es simétrica
Cadena 2: señora
No, la cadena dada no es simétrica
Cadena 3: madma
Sí, la cuerda dada es simétrica
Cadena 4: cívica
No, la cadena dada no es simétrica
Cuerda 5: khokho
Sí, la cuerda dada es simétrica

Relacionada: 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:

# Programa de Python para comprobar si la cadena es simétrica o no
# Función para comprobar si la cuerda es simétrica o no
def esSimétrico (str):
midIndex = 0
longitud = len (str)
si la longitud% 2 == 0:
midIndex = longitud // 2
demás:
midIndex = longitud // 2 + 1
puntero1 = 0
pointer2 = midIndex
while pointer1if (str [pointer1] == str [pointer2]):
puntero1 + = 1
puntero2 + = 1
demás:
falso retorno
volver verdadero
# Caso de prueba: 1
str1 = "abab"
print ("Cadena 1:", cadena1)
si (esSimétrico (str1)):
print ("Sí, la cadena dada es simétrica")
demás:
print ("No, la cadena dada no es simétrica")
# Caso de prueba: 2
str2 = "señora"
print ("Cadena 2:", str2)
si (esSimétrico (str2)):
print ("Sí, la cadena dada es simétrica")
demás:
print ("No, la cadena dada no es simétrica")
# Caso de prueba: 3
str3 = "madma"
print ("Cadena 3:", str3)
si (esSimétrico (str3)):
print ("Sí, la cadena dada es simétrica")
demás:
print ("No, la cadena dada no es simétrica")
# Caso de prueba: 4
str4 = "cívico"
print ("Cadena 4:", str4)
si (esSimétrico (str4)):
print ("Sí, la cadena dada es simétrica")
demás:
print ("No, la cadena dada no es simétrica")
# Caso de prueba: 5
str5 = "khokho"
print ("Cadena 5:", str5)
si (esSimétrico (str5)):
print ("Sí, la cadena dada es simétrica")
demás:
print ("No, la cadena dada no es simétrica")

Producción:

Cadena 1: abab
Sí, la cuerda dada es simétrica
Cadena 2: señora
No, la cadena dada no es simétrica
Cadena 3: madma
Sí, la cuerda dada es simétrica
Cadena 4: cívica
No, la cadena dada no es simétrica
Cuerda 5: khokho
Sí, la cuerda dada es simétrica

Relacionada: ¿Aprendiendo 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:

// Programa JavaScript para comprobar si la cadena es simétrica o no
// Función para comprobar si la cadena es simétrica o no
function isSymmetrical (str) {
var midIndex;
var length = str.length;
// Si la longitud de la cadena es par
si (longitud% 2 == 0) {
midIndex = Math.floor (longitud / 2);
}
// Si la longitud de la cadena es impar
demás {
midIndex = Math.floor (longitud / 2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
while (pointer1if (str [pointer1] == str [pointer2]) {
puntero1 + = 1;
puntero2 + = 1;
} demás {
falso retorno;
}
}
devuelve verdadero;
}
// Caso de prueba: 1
var str1 = "abab";
document.write ("Cadena 1:" + str1 + "
");
if (isSymmetrical (str1)) {
document.write ("Sí, la cadena dada es simétrica" ​​+ "
");
} demás {
document.write ("No, la cadena dada no es simétrica" ​​+ "
");
}
// Caso de prueba: 2
var str2 = "señora";
document.write ("Cadena 2:" + str2 + "
");
if (isSymmetrical (str2)) {
document.write ("Sí, la cadena dada es simétrica" ​​+ "
");
} demás {
document.write ("No, la cadena dada no es simétrica" ​​+ "
");
}
// Caso de prueba: 3
var str3 = "madma";
document.write ("Cadena 3:" + str3 + "
");
if (isSymmetrical (str3)) {
document.write ("Sí, la cadena dada es simétrica" ​​+ "
");
} demás {
document.write ("No, la cadena dada no es simétrica" ​​+ "
");
}
// Caso de prueba: 4
var str4 = "cívico";
document.write ("Cadena 4:" + str4 + "
");
if (isSymmetrical (str4)) {
document.write ("Sí, la cadena dada es simétrica" ​​+ "
");
} demás {
document.write ("No, la cadena dada no es simétrica" ​​+ "
");
}
// Caso de prueba: 5
var str5 = "khokho";
document.write ("Cadena 5:" + str5 + "
");
if (isSymmetrical (str5)) {
document.write ("Sí, la cadena dada es simétrica" ​​+ "
");
} demás {
document.write ("No, la cadena dada no es simétrica" ​​+ "
");
}

Producción:

Cadena 1: abab
Sí, la cuerda dada es simétrica
Cadena 2: señora
No, la cadena dada no es simétrica
Cadena 3: madma
Sí, la cuerda dada es simétrica
Cadena 4: cívica
No, la cadena dada no es simétrica
Cuerda 5: khokho
Sí, la cuerda dada es simétrica

Relacionada: 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. Debes resolver algunos de los famosos problemas de programación basados ​​en cadenas como comprobar si una cadena es un palíndromo, comprobar si dos cadenas son anagramas entre sí, busque el carácter que aparece con más frecuencia en una cadena, invierta una cadena, etc. si está buscando estar completamente preparado.

CuotaPíoCorreo electrónico
Cómo comprobar si una cuerda es un palíndromo

¿Tu cuerda es un palíndromo? Ya sea que use Python, C ++ o JavaScript, use uno de estos algoritmos para averiguarlo.

Leer siguiente

Temas relacionados
  • Programación
  • JavaScript
  • Pitón
  • Tutoriales de codificación
  • Programación en C
Sobre el Autor
Yuvraj Chandra (50 artículos publicados)

Yuvraj es estudiante de licenciatura en Ciencias de la Computación en la Universidad de Delhi, India. Le apasiona el desarrollo web Full Stack. Cuando no está escribiendo, está explorando la profundidad de diferentes tecnologías.

Más de Yuvraj Chandra

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse