import sys
def main():
# Leer la entrada de stdin
raw_input = sys.stdin.read().strip()
if not raw_input:
return
# Normalizar: eliminar cualquier espacio en blanco y convertir a minúsculas
# split() divide por cualquier espacio (espacio, tab, etc.) y join los une
clean_text = "".join(raw_input.split()).lower()
# Comparar la cadena limpia con su versión invertida
if clean_text == clean_text[::-1]:
print("SI")
else:
print("NO")
if __name__ == "__main__":
main()El Mensaje Simétrico del Espacio
bash · c · c++ · go · java · javascript · python · rust · typescript
Los científicos de una estación espacial han recibido una serie de señales de una civilización lejana. Se cree que los mensajes más importantes son aquellos que se leen igual al derecho y al revés, conocidos como palíndromos.
Tu misión es crear un programa que analice estas señales para determinar si son importantes. Para que el análisis sea correcto, debes ignorar todos los espacios en blanco y no hacer distinción entre mayúsculas y minúsculas.
Entrada
Una sola línea de texto $S$ que contiene letras del alfabeto inglés, números y espacios.
Salida
Imprime SI si el mensaje es un palíndromo (tras ignorar espacios y mayúsculas) y NO en caso contrario.
Restricciones
- $1 \leq |S| \leq 1000$ caracteres.
- La cadena solo contiene caracteres alfanuméricos básicos (A-Z, a-z, 0-9) y espacios en blanco.
Ejemplo
Anita lava la tina
SI
Al quitar los espacios y pasar a minúsculas, obtenemos 'anitalavalatina', que se lee exactamente igual de izquierda a derecha y de derecha a izquierda.
Soluciones de la comunidad
Cada una pasó el 100% de los casos de prueba en el sandbox.
s = input()
i, j = 0, len(s) - 1
while i < j:
while i < j and s[i] == " ":
i += 1
while i < j and s[j] == " ":
j -= 1
if s[i].lower() != s[j].lower():
print("NO")
break
i += 1
j -= 1
else:
print("SI")print("SI" if (s := "".join(input().split()).lower()) == s[::-1] else "NO")print(["NO","SI"][(s:="".join(input().split()).lower())==s[::-1]])
#include <string>
#include <cctype>
#include <iostream>
bool esPalindromo(const std::string& palabra)
{
int inicio = 0;
int fin = palabra.length() - 1;
while (inicio < fin)
{
while (inicio < fin && !std::isalnum(palabra[inicio]))
{
inicio++;
}
while (inicio < fin && !std::isalnum(palabra[fin]))
{
fin--;
}
if (std::tolower(palabra[inicio]) != std::tolower(palabra[fin]))
{
return false;
}
inicio++;
fin--;
}
return true;
}
int main()
{
std::string pal;
std::getline(std::cin, pal);
if (esPalindromo(pal))
{
std::cout << "SI" << std::endl;
}
else
{
std::cout << "NO" << std::endl;
}
}