Sobes.tech
Middle
31

Жолдың палиндром екенін тексеретін функция жазыңыз. Палиндром — бұл екі бағытта да бірдей оқылатын символдар тізбегі. Тексеру тек әліпби таңбаларына арналған, яғни а-я, А-Я, регистр ескерілмейді.

Сұралған компаниялар
VKVK

AI-дан жауап

sobes.tech 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))
}

}


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