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))
}
}
Функция сначала фильтрует строку, оставляя только русские буквы, приводит их к нижнему регистру, а затем проверяет, читается ли строка одинаково слева направо и справа налево.