go package main
// isPalindrome проверяет, является ли строка палиндромом.
go package main
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
// isPalindrome проверяет, является ли строка палиндромом. // Учитываются только буквы и цифры (алфавномерические символы), сравнение регистронезависимое. // O(1) по памяти + O(n) по времени // s := "racecar"
func isPalindrome(s string) bool { }
Ответ
go package main
import ( "fmt" "strings" "unicode" )
func isPalindrome(s string) bool { var filtered []rune for _, r := range s { if unicode.IsLetter(r) { filtered = append(filtered, unicode.ToLower(r)) } }
for i, j := 0, len(filtered)-1; i < j; i, j = i+1, j-1 {
if filtered[i] != filtered[j] {
return false
}
}
return true
}
func main() { fmt.Println(isPalindrome("А роза упала на лапу Азора")) // true fmt.Println(isPalindrome("Hello, world!")) // false }