Middle
Schreiben Sie eine Funktion, die überprüft, ob eine Zeichenkette ein Palindrom ist. Ein Palindrom ist eine Folge von Zeichen, die in beide Richtungen gleich gelesen wird. Nur Zeichen des Alphabets a- я, А- Я, sollen überprüft werden, ohne Berücksichtigung der Groß- und Kleinschreibung.
sobes.tech KI
Antwort von AI
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))
}
}
Функция сначала фильтрует строку, оставляя только русские буквы, приводит их к нижнему регистру, а затем проверяет, читается ли строка одинаково слева направо и справа налево.