Мой опыт с палиндромами
Привет, меня зовут Денис, и я хотел бы рассказать вам о своем опыте с палиндромами․ В один прекрасный день мне задали задачу написать функцию, которая определяет, является ли заданная строка палиндромом․ Задача показалась мне интересной, и я решил ее решить․
Итак, что такое палиндром? Палиндром – это строка, которая читается одинаково слева направо и справа налево․ Например, строка ″А роза упала на лапу Азора″ – палиндром, так как она читается одинаково как слева направо, так и справа налево․
Приступив к решению задачи, я понял, что мне потребуется функция, которая будет принимать в качестве аргумента строку и возвращать булевое значение – true, если строка является палиндромом, и false в противном случае․
Решение этой задачи достаточно простое․ Первым делом, я решил удалить из строки все символы, кроме букв․ Для этого я использовал регулярное выражение, которое оставляло только буквы (и удаляло пробелы и другие символы)․
Вот код функции IsPalindrome⁚
package main
import (
″fmt″
″regexp″
″strings″
)
func IsPalindrome(input string) bool {
r ⁚ regexp․MustCompile(`[[⁚alpha⁚]] `)
letters ⁚ strings․ToLower(strings․Join(r․FindAllString(input, -1), ″″))
for i ⁚ 0; i < len(letters)/2; i { if letters[i] ! letters[len(letters)-i-1] { return false } } return true } func main { fmt․Println(IsPalindrome(″А роза упала на лапу Азора″)) // true fmt․Println(IsPalindrome(″hello world″)) // false }
В функции IsPalindrome сначала я использую регулярное выражение [[⁚alpha⁚]] , чтобы оставить только буквы в строке и привести их к нижнему регистру․ Далее, я сравниваю символы первой половины строки с символами второй половины строки․ Если символы не совпадают, функция возвращает false, что означает, что строка не является палиндромом․ Если все символы совпадают, функция возвращает true․
В моем случае, функция IsPalindrome(″А роза упала на лапу Азора″) вернула true, что означает, что эта строка является палиндромом․ А функция IsPalindrome(″hello world″) вернула false, что означает, что эта строка не является палиндромом․