@whoisyourfriend

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

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

Нашёл в интернете решение, как можно было бы решить через функцию, но мое дз предусматривает, что функциями я ещё не владею.
Подскажите как решить эту задачу, используя for in.
Была мысль делая обход по массиву сравнить его первый символ с последним, но как это записать в for in, я не понял.
  • Вопрос задан
  • 592 просмотра
Решения вопроса 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) ? "палидром" : "не палидром")

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

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

Похожие вопросы