Проверьте, является ли строка палиндромом: читается одинаково слева направо и справа
налево.
- Регистр не важен: «Elle» — палиндром.
- Учитываются только буквы и цифры (любого алфавита). Пробелы, знаки препинания и
прочие символы пропускаются: «А роза упала на лапу Азора» — палиндром.
- Строка — UTF-8 и может содержать кириллицу: «казак» — палиндром.
// IsPalindrome сообщает, является ли s палиндромом
// (без учёта регистра, только буквы и цифры).
func IsPalindrome(s string) bool
Примеры
IsPalindrome("Elle") // true
IsPalindrome("chair") // false
IsPalindrome("Mark") // false
IsPalindrome("казак") // true
IsPalindrome("А роза упала на лапу Азора") // true
IsPalindrome("A man, a plan, a canal: Panama") // true
IsPalindrome("") // true
Ограничения: 0 <= len(s) <= 10^6 байт. Время O(n). Дополнительная память O(1) —
решение «на плюс»; O(n) тоже принимается.
Устно: почему s[i] != s[len(s)-1-i] ломается на «казак»? Что такое руна?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.