Sobes.tech
Middle

Γράψτε μια συνάρτηση που ελέγχει αν μια συμβολοσειρά είναι παλίνδρομο. Ένας παλίνδρομος είναι μια ακολουθία χαρακτήρων που διαβάζεται το ίδιο και από τις δύο κατευθύνσεις. Πρέπει να ελέγξετε μόνο με χαρακτήρες του αλφαβήτου a- я, А- Я, χωρίς να λαμβάνετε υπόψη το διακριτικό μέγεθος.

sobes.tech AI

Απάντηση από 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))
}

}


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