@whoisyourfriend

Как проверить, является ли слово палиндромом?

Необходимо выяснить, является ли слово, например «казак», палиндромом.
Я написал код, сравнивающий символы в массиве через if. Но такой код не подойдёт, если это будет строка из 1000 символов.

Нашёл в интернете решение, как можно было бы решить через функцию, но мое дз предусматривает, что функциями я ещё не владею.
Подскажите как решить эту задачу, используя for in.
Была мысль делая обход по массиву сравнить его первый символ с последним, но как это записать в for in, я не понял.
  • Вопрос задан
  • 505 просмотров
Решения вопроса 1
@iMaximus
If нужно использовать там где он реально нужен, в нормальной конторе, за несколько вложенных if в функции бьют ногами :)

Это в 3 строки делается
let str = "казак"
let reversrdStr = String(str.reversed())
print((str == reversrdStr) ? "палидром" : "не палидром")

Или нужно извращаться для обучения, разбивая на символы? :)

Дополнил, тогда так.

let str = "казак"
let charsters =  Array(str)
let maxIndex = charsters.count - 1
var newStr = ""

for i in 0...maxIndex{
    newStr = newStr + String(charsters[maxIndex-i])
}
print((str == newStr) ? "палидром" : "не палидром")

Можно сравнивать посимвольно, не составляя новое слово.
Используя второй пример, легко понять как это сделать самому.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы