Практика: Перевернуть строку.
Читая статьи на Хабре иногда попадается что программистам на собеседованиях задают следующее задание.
Нужно создать функцию которая будет принимать любую текстовую строку и возвращать эту же строку, только в перевернутом виде. Тоесть передаем 'Привет мир!' получаем '!рим тевирП'. Это задание задавалось для программистов знающих PHP или C++, но я подумал "А как бы я решил это используя JavaScript". Решение получилось очень легким. А как бы Вы решили это задание на JavaScript ? P.S. Свое решение выложу ближе к вечеру. Хотя уверен что его предложат одним из первых. |
function reverseStr(str) { return str.split("").reverse().join(""); } alert(reverseStr("Привет мир!")); |
Octane привел тривиальное (потому что очевидное) решение. Давайте подумаем, как еще можно это сделать. Просто ради фана. Хотя, видимо, самое правильное решение уже приведено, давайте поизвращаемся немного.
function reverseStr(str) { var newStr = '', i; for (i = str.length - 1; i >= 0; i--) { newStr += str.charAt(i); } return newStr; } alert(reverseStr('Привет мир!')); Какие еще есть варианты функции reverseStr? |
Хочу сказать что вначале это задание я решил следующим образом:
function reverse (data) { var letters = [], l = data.length; while (l--) { letters.push(data[l]); } return letters.join(''); } alert(reverse('Это обычный текст.')); В обратном цикле со строки вытаскиваем символы и помещаем их в массив, после этот массив преобразуем в строку. Немного поразмыслив решил что логичней использовать нативный метод который есть у массивов, reverse(): function reverse (str) { var letters = str.split(''); letters.reverse(); return letters.join(''); } alert(reverse('Привет мир, как дела!?')); Ну и дальше оптимизация: function reverse (str) { return str.split('').reverse().join(''); } alert(reverse('Привет мир, как дела!?')); |
Вариант который предложил Octane - компактный, но вариант от ваый вроде как быстрее (почти в два раза)
|
Хо-хо! Действительно, в 2.5 раза быстрее!
|
var str = 'Привет мир!'; alert('\u202E' + str); |
А как вы измеряете скорость?
Цитата:
|
|
Цитата:
|
Часовой пояс GMT +3, время: 03:32. |