Sobes.tech
Middle

Escribir una función que verifique si una cadena es un palíndromo. Un palíndromo es una secuencia de caracteres que se lee igual en ambos sentidos. Solo se debe comprobar con caracteres del alfabeto a- я, А- Я, sin tener en cuenta mayúsculas o minúsculas.

sobes.tech AI

Respuesta de la IA

go package main

import ( "fmt" "unicode" "strings" )

func isPalindrome(s string) bool { // Фильтруем строку, оставляя только буквы а-я и А-Я var filtered []rune for _, r := range s { if unicode.IsLetter(r) { // Проверяем, что буква из русского алфавита // Диапазон русских букв: 'А' - 'я' if (r >= 'А' && r <= 'я') || (r >= 'а' && r <= 'я') { filtered = append(filtered, unicode.ToLower(r)) } } }

// Проверяем палиндром
n := len(filtered)
for i := 0; i < n/2; i++ {
	if filtered[i] != filtered[n-1-i] {
		return false
	}
}
return true

}

func main() { tests := []string{ "А роза упала на лапу Азора", "Привет", "Шалаш", "123абввба321", }

for _, test := range tests {
	fmt.Printf("%q -> %v\n", test, isPalindrome(test))
}

}


Функция сначала фильтрует строку, оставляя только русские буквы, приводит их к нижнему регистру, а затем проверяет, читается ли строка одинаково слева направо и справа налево.