Задать вопрос
Kowka_VN
@Kowka_VN

Алгоритм переворота строки как реализовать?

function reverse(str){
	var i = 0;
	for(var j = str.length - 1; j > 0; j--){
		for (i = 0;  i < j; i++) {
			temp = str[i];
			str[i] = str[j];
			str[j] = temp;
		}
	}
 return str
}

Как сделать чтоб работал? Приятнее всего будет увидеть исправление этого алгоритма, а не предлагание более короткого и красивого. Нужен универсальный вариант, так чтоб можно было реализовать на любом языке без особых изменений в коде.
  • Вопрос задан
  • 4573 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 2
nakree
@nakree
Fullstack Developer
На основе Вашего примера: https://jsfiddle.net/v85dtg49/2/

const str = 'abcde'

function reverseString(str) {
  let tempString = ''
  for(let j = str.length - 1; j >= 0; j--){
   	tempString += str[j]
  }
  return tempString
}

console.log('str:', str)
console.log('reverse:', reverseString(str))


Вариант покороче: https://jsfiddle.net/v85dtg49/1/

const str = 'abcde'

function reverseString(str) {
 return str.split('').reverse().join('')
}

console.log('str:', str)
console.log('reverse:', reverseString(str))
Ответ написан
Комментировать
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
В вашем решении надо оставить только один цикл. Лучше его заменить на while. i++ и j-- выплняются каждую итерацию.

var j, i
 while (i < j;) {
      temp = str[i];
      str[i] = str[j];
      str[j] = temp;
      i++; 
      j--;
    }
  }
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
romasovest
@romasovest
~
var str = "abcd";
var str_arr = str.split("");
str_arr.reverse();
var reverse_str = str_arr.join("");
console.log(reverse_str); // dcba

Наверное можно короче и не проверял но мысль понятна думаю.
Ответ написан
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Да ты извращенец.
Делай так
var str=[1,2,3,4];
str.reverse();
console.log(str)
Ответ написан
@LemonFox
stateless mind
function reverse(str){
  var i = 0;
  var l = str.length;
  var half = Math.ceil(l / 2);
  for(var i = 0; i <= half; i++){
      temp = str[i];
      str[i] = str[l-i];
      str[l-i] = temp;
  }
 return str
}
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
  1. не нужно два цикла, достаточно одного;
  2. в JS нельзя записать в строку символ через array access, типа str[i] = "x" Так можно только читать.

Поэтому предлагаю создать временную переменную, в которую собирать строку по символу, в обратном порядке:

function reverse(str) {
  var i, len = str.length, result = "";
  for (i = len - 1;  i >= 0; i--) result += str[i];
  return result;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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