Практика: Перевернуть строку.
Читая статьи на Хабре иногда попадается что программистам на собеседованиях задают следующее задание.
Нужно создать функцию которая будет принимать любую текстовую строку и возвращать эту же строку, только в перевернутом виде. Тоесть передаем 'Привет мир!' получаем '!рим тевирП'. Это задание задавалось для программистов знающих 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, время: 14:11. |