Задача: Реверсія рядка
Напишіть функцію на Python, яка приймає рядок і повертає його реверсовану версію. Ви не можете використовувати вбудовану функцію reverse() або схожі засоби. Спробуйте вирішити задачу без створення додаткового рядка.
Приклад виклику функції:print(reverse_string("Hello, World!"))
Очікуваний вивід:!dlroW ,olleH
Нехай код буде коротеньким та ефективним! Удачі!
Сегодня не все могут понять рекурсию,
Вернее понять могут-то все, а понимают не все.
Сегодня не все могут понимать,
Мало, кто может так делать.
Ответы
Код:
def reverse_string(s):
s = list(s)
i, j = 0, len(s) - 1
while i < j:
s[i], s[j] = s[j], s[i]
i += 1
j -= 1
return ''.join(s)
print(reverse_string("Hello, World!")
Пояснення:
1. Спочатку функція отримує рядок `s` як вхідний аргумент.
2. `s = list(s)` - Ми перетворюємо рядок `s` в список символів, це допоможе нам зручно маніпулювати символами рядка, оскільки списки можуть бути змінювані (mutable).
3. `i, j = 0, len(s) - 1` - Ми ініціалізуємо два покажчики `i` та `j`. `i` вказує на початок рядка, а `j` на його кінець.
4. Далі, у нас є цикл `while`, який працює доти, доки `i` менше `j`. Це гарантує, що ми будемо обмінювати символи, поки не дійдемо до середини рядка.
5. У циклі ми використовуємо операцію обміну значень між `s[i]` та `s[j]`, яка здійснює обернення символів на відповідних позиціях. Це допомагає обернути рядок шляхом обміну символів від початку до кінця.
6. `i` збільшується на 1, і `j` зменшується на 1, таким чином, обмінюючи символи та зближуючи покажчики.
7. Нарешті, ми повертаємо реверсований рядок, об'єднуючи символи списку знову в рядок за допомогою `''.join(s)`.
Ответ:
def reverse_string(s):
return s if len(s)==1 else s[-1]+reverse_string(s[:-1])
print(reverse_string("Hello, World!"))
Объяснение:
Да прибудет с Вами сила рекурсивного питона :)
В ответе нет ни одного цикла, он занимает 3 строки, из которых 2 обязательных (print и def)