Programa de Python para verificar si la string es simétrica o palíndromo

Dada una string. la tarea es comprobar si la cuerda es simétrica y palíndromo o no. Se dice que una string es simétrica si ambas mitades de la string son iguales y se dice que una string es palíndromo si una mitad de la string es la inversa de la otra mitad o si una string parece igual cuando se lee hacia adelante o hacia adelante. hacia atrás.

Ejemplo: 

Input: khokho
Output: 
The entered string is symmetrical
The entered string is not palindrome

Input:amaama
Output:
The entered string is symmetrical
The entered string is palindrome

Enfoque 1: El enfoque es muy ingenuo. En el caso de palíndromo, se ejecuta un bucle hasta la mitad de la string y se hacen coincidir el primer y el último carácter. Si los caracteres no son similares, el bucle se interrumpe y la string no es un palíndromo; de lo contrario, la string es un palíndromo. En el caso de la simetría, si la longitud de la string es par, la string se divide en dos mitades y se ejecuta el bucle, comprobando los caracteres de las strings de ambas mitades. Si los caracteres no son similares, los bucles se rompen y la string no es simétrica; de lo contrario, la string es simétrica. Si la longitud de la string es impar, entonces la string se divide en dos mitades de tal manera que el elemento del medio se deja sin marcar y se repite el mismo paso anterior.

A continuación se muestra la implementación.

Python3

# Python program to demonstrate
# symmetry and palindrome of the
# string
 
 
# Function to check whether the
# string is palindrome or not
def palindrome(a):
  
    # finding the mid, start
    # and last index of the string
    mid = (len(a)-1)//2     #you can remove the -1 or you add <= sign in line 21 
    start = 0                #so that you can compare the middle elements also.
    last = len(a)-1
    flag = 0
 
    # A loop till the mid of the
    # string
    while(start <= mid):
  
        # comparing letters from right
        # from the letters from left
        if (a[start]== a[last]):
             
            start += 1
            last -= 1
             
        else:
            flag = 1
            break;
             
    # Checking the flag variable to
    # check if the string is palindrome
    # or not
    if flag == 0:
        print("The entered string is palindrome")
    else:
        print("The entered string is not palindrome")
         
# Function to check whether the
# string is symmetrical or not       
def symmetry(a):
     
    n = len(a)
    flag = 0
     
    # Check if the string's length
    # is odd or even
    if n%2:
        mid = n//2 +1
    else:
        mid = n//2
         
    start1 = 0
    start2 = mid
     
    while(start1 < mid and start2 < n):
         
        if (a[start1]== a[start2]):
            start1 = start1 + 1
            start2 = start2 + 1
        else:
            flag = 1
            break
      
    # Checking the flag variable to
    # check if the string is symmetrical
    # or not
    if flag == 0:
        print("The entered string is symmetrical")
    else:
        print("The entered string is not symmetrical")
         
# Driver code
string = 'amaama'
palindrome(string)
symmetry(string)
Producción

The entered string is palindrome
The entered string is symmetrical

Enfoque 2:

Usamos el corte en este método.

Python3

string = 'amaama'
half = int(len(string) / 2)
 
if len(string) % 2 == 0:  # even
    first_str = string[:half]
    second_str = string[half:]
else:  # odd
    first_str = string[:half]
    second_str = string[half+1:]
 
# symmetric
if first_str == second_str:
    print(string, 'string is symmertical')
else:
    print(string, 'string is not symmertical')
 
# palindrome
if first_str == second_str[::-1]:  # ''.join(reversed(second_str)) [slower]
    print(string, 'string is palindrome')
else:
    print(string, 'string is not palindrome')
Producción

amaama string is symmertical
amaama string is palindrome

Publicación traducida automáticamente

Artículo escrito por vanshikagoyal43 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *