5 способов перевернуть строку в Python 3
Создадим функцию reversed1 с аргументом variable , где variable — переменная, хранящая строку, которую мы хотим перевернуть. Так как строка являются неизменяемым объектом, то создадим отдельную, пока что пустую переменную res , которая в будущем будет хранить результат.
def reversed1(variable): res=''
В функцию поместим цикл, который будет «прохаживаться» по каждому из элементов строки. Начнем мы с конца строки, используя положительные индексы, соответственно параметр start функции range — len(variable)-1 . -1 потому, что длина строки всегда на 1 больше, чем индекс последнего ее элемента. Закончить мы должны на первом символе строки, поэтому параметр stop функции range() — -1, поскольку перечисляются числа до значения этого параметра, не включительно. Параметр step — -1, потому что мы считаем в обратном порядке.
def reversed1(variable): res='' for i in range(len(variable)-1,-1,-1): pass
Теперь заполним тело цикла — проведем конкатенацию между старым значением res и элементом строки с индексом i . Таким образом, при каждой итерации цикла мы добавляем по одному символу к результату. После окончания цикла вернем результат.
def reversed1(variable): res='' for i in range(len(variable)-1,-1,-1): res+=variable[i] return res n = reversed1(input()) print(n)
2. Использование цикла со списком в результате
Этот способ аналогичен предыдущему, единственное его отличие заключается в типе данных переменной res — здесь она является списком.
Вместо конкатенации можно использовать метод append() , с помощью которого мы добавляем элемент, указанный в качестве аргумента к методу, в конец списка. Итак, мы получили:
def reversed2(variable): res=[] for i in range(len(variable)-1,-1,-1): res.append(variable[i]) return res
Функция пока что возвращает список, состоящий из односимвольных элементов. Если нас это не устраивает, то почему бы не преобразовать список в строку при помощи метода join() ? Сделаем это, добавив конструкцию res=».join(res) .
def reversed1(variable): res=[] for i in range(len(variable)-1,-1,-1): res.append(variable[i]) res=''.join(res) return res n = reversed1(input()) print(n)
3. Рекурсия
Третий в нашем обзоре способ — рекурсия, как всегда трудная для понимания. Как всегда создаем функцию, но не спешим помещать туда цикл.
Начну объяснение с конца. Если мы записали в результат все символы кроме первого, то длина оставшейся строки равна единице и, следовательно, ее нужно вернуть. Получаем:
def reversed3(variable): if len(variable) == 1: return variable
Но если длина строки больше одного, то нужно вернуть последний из ее элементов и вызвать эту же функцию, но уже отрезав последний символ. Сделать это мы можем с помощью среза variable[:-1] . Обновим картину:
def reversed3(variable): if len(variable) == 1: return variable else: return variable[-1] + reversed3(variable[:-1])
Использование else: здесь необязательно, так как после возвращения чего-либо этой функцией она завершится. Поэтому конструкцию return variable[-1] + reverse3(variable[:-1]) можно поместить напрямую в тело функции. Конечный вариант решения:
def reversed3(variable): if len(variable) == 1: return variable return variable[-1] + reversed3(variable[:-1]) n = reversed3(input()) print(n)
4. Использование встроенной функции
В Python 3 встроена специальная функция reversed() , в качестве аргумента она принимает список или строку, а возвращает итератор последовательности значений, состоящей из всех элементов аргумента в обратном порядке.
Простыми словами — недостаточно написать res = reversed(variable) , данные нужно преобразовать в нужный тип (в нашем случае — в строку). Сделать мы это можем при помощи метода join() , соединив последовательность через пустую строку. После выполненных действий возвращаем результат. Код:
def reversed4(variable): res=''.join(reversed(variable)) return res n = reversed4(input()) print(n)
5. Срез строки
Можете представить способ перевернуть строку, который был бы короче названия функции? А я могу!
Срез строки — вещь прекрасная, но порой пугающая новичков «уплотненным» синтаксисом. Срез содержит три параметра — [start:stop:step], аналогично функции range() . Подробнее о них вы можете прочитать в других статьях на Хабре.
Для способа с использованием срезов не нужно даже создавать функцию, только зря строки и время потратите. Все элементарно — присвоим параметру step значение -1 и пропустим два других параметра, происходит магия — строка переворачивается:
n = input()[::-1] print(n)
Конечно, никакой магии здесь нет, мы просто перебираем символы с шагом -1, то есть в обратном порядке.
Заключение
Первый и второй способы как нельзя лучше подходят, если во время переворота строки нужно ее изменять. При этом они значительно уступают 4 и 5 способам в скорости. Читаются умеренно хорошо, поэтому в некоторых случаях их уместно использовать.
Насчет третьего способа много сказать не могу, поскольку не могу придумать ему применение. Такой способ плохо читается и довольно медленный, поэтому я не рекомендую его использовать.
Четвертый способ довольно быстрый, отлично читается и подходит во многих случаях.
Пятый способ — самый быстрый, хорошо читается, очень краткий (6 символов), поэтому его я считаю наиболее предпочтительным.
Сравнительную таблицу скорости некоторых способов вы можете найти по ссылке — https://python-scripts.com/reversed
Если знаете что-либо еще по этой теме, хотите меня поправить или дать идею — пишите в комментариях, я все прочту и приму к сведению. Удачи!
Вывести слова строки в обратном порядке
Вводится строка слов. Вывести слова в обратном порядке.
- str — строка;
- len — длина строки;
- a — длина очередного слова;
- i — текущая позиция в строке.
Алгоритм решения задачи:
Будем перебирать символы строки с конца и измерять количество подряд идущих непробельных символов. Если очередной символ — пробел, следует вывести на экран отрезок строки от предыдущего с конца символа ( i + 1 ) на длину подряд идущих непробельных символов. Это делается с помощью функции copy. После того как слово будет выведено, надо обнулить фиксируемую длину слова ( a = 0 ).
Поскольку вывод слова «срабатывает», только когда встречается пробел, то первое слово строки (последнее из найденных при поиске с конца) выведено не будет, если перед ним нет пробела. Поэтому в программе за циклом предусмотрен отдельный вывод последней найденной подстроки.
Программа на языке Паскаль:
var str: string; len, i, a: byte; begin readln(str); len := length(str); a := 0; for i:=len downto 1 do begin if str[i] = ' ' then begin write(copy(str, i+1, a), ' '); a := 0; end else a := a + 1; end; write(copy(str, i, a)); writeln; end.
Пример работы программы:
one two three three two one
Как вывести строку в обратном порядке java
Чтобы вывести строку в обратном порядку в Java, можно использовать StringBuilder для переворота строки. В классе StringBuilder есть метод reverse() , который позволяет это сделать:
var word = "Hello"; var reversed = new StringBuilder(word) .reverse() .toString(); // Выводим на экран перевернутую строку System.out.println(reversed); // => olleH
3.5. Java примеры – Вывод строки и массива в обратном порядке
Следующий пример показывает как вывести строку в обратном порядке в Java, после взятия ее из аргумента командной строки. Программа буферизует входную строку с использованием метода StringBuffer(), реверсирует буфер и затем преобразует буфер в String с помощью метода toString().
public class Example < public static void main(String[] args) < String str = "абвгдеёжзи"; String reverse = new StringBuffer(str).reverse().toString(); System.out.println("\nСтрока до реверса: " + str); System.out.println("Строка в обратном порядке, после реверса: " + reverse); >>
Результат
Получим следующий результат:
Строка до реверса: абвгдеёжзи Строка в обратном порядке, после реверса: изжёедгвба
Решение: вывод массива в обратном порядке
Ниже продемонстрирован пример как вывести массив в обратном порядке в Java.
public class Example < public static void main(String[] args) < String str = "ProgLang.su"; char[] reverseArray1 = str.toCharArray(); // Преобразуем строку str в массив символов (char) System.out.print("1. Массив в обратном порядке: "); for (int i = reverseArray1.length-1; i >= 0; i--) System.out.print(reverseArray1[i]); double[] reverseArray2 = ; System.out.print("\n2. Массив в обратном порядке: "); for (int i = reverseArray2.length-1; i >= 0; i--) < System.out.print(reverseArray2[i] + " "); >> >
Результат
Получим следующий результат:
1. Массив в обратном порядке: us.gnaLgorP 2. Массив в обратном порядке: 23.8 11.4 1.9 1.2
Оглавление
- 1. Java примеры – Использование кода на практике
- 2. Java примеры – Окружающая среда
- 2.1. Java примеры – Скомпилировать файл
- 2.2. Java примеры – Установить путь к нескольким классам
- 2.3. Java примеры – Отладка java-файла
- 2.4. Java примеры – Установить путь к классу
- 2.5. Java примеры – Просмотреть текущий путь класса
- 2.6. Java примеры – Установить назначение файла класса
- 2.7. Java примеры – Запустить скомпилированный java-файл класса
- 2.8. Java примеры – Узнать версию Java
- 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
- 3. Java примеры – Строки
- 3.1. Java примеры – Сравнить две строки
- 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
- 3.3. Java примеры – Удалить нужный символ из строки
- 3.4. Java примеры – Заменить символ в строке
- 3.5. Java примеры – Вывод в обратном порядке
- 3.6. Java примеры – Нахождение символа или слова в строке
- 3.7. Java примеры – Разбиение строки на слова и символы
- 3.8. Java примеры – Преобразование строки в верхний регистр
- 3.9. Java примеры – Найти слово в строке
- 3.10. Java примеры – Сравнить производительность создания строки
- 3.11. Java примеры – Оптимизировать создание строк
- 3.12. Java примеры – Форматирование строк
- 3.13. Java примеры – Конкатенация строк
- 3.14. Java примеры – Определить код Юникода символа в строке
- 3.15. Java примеры – Буферизация строк
- 4. Java примеры – Массивы
- 4.1. Java примеры – Сортировка массива и поиск элемента
- 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
- 4.3. Java примеры – Размер двумерного массива
- 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
- 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
- 4.6. Java примеры – Найти максимальный и минимальный элемент массива
- 4.7. Java примеры – Соединить два массива в один
- 4.8. Java примеры – Как заполнить массив числами
- 4.9. Java примеры – Увеличить массив после инициализации
- 4.10. Java примеры – Сравнение двух массивов
- 4.11. Java примеры – Удаление элемента из массива
- 4.12. Java примеры – Удаление массива из другого массива
- 4.13. Java примеры – Одинаковые элементы массивов
- 4.14. Java примеры – Поиск в массиве
- 4.15. Java примеры – Равенство двух массивов
- 4.16. Java примеры – Сравнить массивы
- 5. Java примеры – Дата и время
- 5.1. Java примеры – Форматирование времени в формате AM-PM
- 5.2. Java примеры – Получение названия и номера текущего месяца
- 5.3. Java примеры – Получить текущее время в часах и минутах
- 5.4. Java примеры – Вывести текущее время и дату
- 5.5. Java примеры – Вывести текущее время в 24-часовом формате
- 5.6. Java примеры – Получить текущий месяц
- 5.7. Java примеры – Получить текущие секунды
- 5.8. Java примеры – Получить короткое название месяца
- 5.9. Java примеры – Получить день недели
- 5.10. Java примеры – Добавление времени к дате
- 5.11. Java примеры – Отображение времени в формате другой страны
- 5.12. Java примеры – Отображение времени на разных языках
- 5.13. Java примеры – Прокрутить часы и месяцы
- 5.14. Java примеры – Получить номер недели и месяц в году
- 5.15. Java примеры – Форматы текущей даты
- 6. Java примеры – Методы
- 6.1. Java примеры – Перезагрузка методов
- 6.2. Java примеры – Вывод массива с использованием метода
- 6.3. Java примеры – Решение Ханойской башни
- 6.4. Java примеры – Последовательность чисел Фибоначчи
- 6.5. Java примеры – Вычисление факториала числа
- 6.6. Java примеры – Переопределение метода
- 6.7. Java примеры – Вывод массива с использованием метода
- 6.8. Java примеры – Использование оператора break
- 6.9. Java примеры – Использование оператора continue
- 6.10. Java примеры – Использование метки в методе
- 6.11. Java примеры – Использование операторов enum и switch
- 6.12. Java примеры – Использование конструктора enum