反向单词(不是字母)字符串不使用.reverse()

Reverse words(not letters) for a string without using .reverse()

本文关键字:字符串 reverse 单词      更新时间:2023-09-26

我正在处理的问题要求我编写一个函数reverseMessage(),该函数接受字符串消息并颠倒单词的顺序。

我最初想到的答案是有效的,但显然不符合这项任务的要求:

function reverseMessage(string) {
    return string.split(" ").reverse().join(" ");
}
例如:

var string = "reversed are string your in words the now"
var results = "now the words in your string are reversed"
新解决方案:

我想把这个字符串分割成一个数组,然后循环通过该数组和交换第一个索引与最后一个索引,第二个索引与第二个到最后一个索引,第三个索引与第三个到最后一个索引,等等…直到我在中间相遇。

我正试图使下面两个不同的函数工作:

 function reverseMessage(string) {
     var array = string.split(" ");
     //loop through array and replace first index with last index, second   
     index with second to last index, third index with third to last index, etc
     for (var i = 0; i < array.length/2; i++) {
         for (var j = (array.length-1); j > array.length/2; j--) {
             array[i] = array[j];
             array[j] = array[i];
             messageSplit.join(",");
     }
 };

 function reverseMessage2(string) {
     var array = string.split(" ");
     var newArray = []
     for (var i = 0; i < array.length/2; i++) {
         newArray.unshift(array[i]++);
         newArray.join(",");
         return newArray;
     }
 };

我讲对了吗?

   function reverseMessage(string) {
     var array = string.split(" ");
     var result="";
     for (var i = array.length-1; i >=0; i--) {
         result+=array[i]+" ";
     }
    console.log(result);
 };

那么在你的reverseMessage函数中你正在尝试为你正在做的事情交换变量

array[i] = array[j];Array [j] = Array [i];

也就是给出array[i]=array[j]所以让array[i]="This" array[j]="That"那么根据你的代码,array[i]将是"That" array[j]也将是"That"所以你可以尝试这样做:

 function reverseMessage(string) {
     var array = string.split(" ");
     //loop through array and replace first index with last index, second
     //index with second to last index, third index with third to last index, etc
     for (var i = 0,j=(array.length)-1; i < array.length/2; i++) {
             temp=array[i]
             array[i] = array[j];
             array[j]=array[i]
             array[j] = temp; j--;}
       console.log(array.join(" "));
 };  reverseMessage("find you will pain only go you recordings security the into if");

试试这个

function reverseMessage( str ) {
    var arrStr = [];
    var temp ="";
    for(var i = 0 ; i < str.length ; i++)
    {
        if(str[i] === " ")
        {
            arrStr.push(temp);
            temp="";
        }
        else
        {
            temp += str[i]; 
        }
    }
    if(temp.length >= 0)
    {
        arrStr.push(temp);
    }
    var result = "";
    for(var x=arrStr.length-1 ; x >=0 ; x--)
    {
        result += " "+arrStr[x];
    }
    return result;
}

console.log(reverseMessage("I am here"));

总要有人去做:

function rev(s){
  var a = s.split(/ /),
      l = a.length;
      i = l/2 | 0;
  while (i--) a.splice(i, 1, a.splice(l-1-i, 1, a[i])[0]);
  return a.join(' ');
}
    document.write(rev('0 1 2 3 4 5 6 7 8 9'));

使用Array.split(), Array.pop(), Array.push()String.substr():

var flip = function(str) {
  var res = "", sp = " ",  arr = str.split(sp);
  while (arr.length)
    res += arr.pop() + sp;
  return res.substr(0, res.length - 1); //remove last space
};
alert(flip("reversed are string your in words the now"));

使用String.lastIndexOf()String.substr():

var flip = function(str) {
  var res = "", i, sp = ' ';
  while (str) {
    i = str.lastIndexOf(sp);
    res += str.substr(i + 1) + sp;
    str = str.substr(0, i);
  }
  return res.substr(0, res.length - 1); //remove last space
};
alert(flip("reversed are string your in words the now"));

您要做的是将单词消息拆分为单独的字符串,将它们反转,然后将它们加在一起,这将使它们在适当的位置反转。试着

function reverseMessage(message){
  var reversedMessage = ''; //A string to hold the reversed message
  var words = message.split(' ');
  for(var i =0; i< words.length; i++){
     reversedMessage +=  reverse(words[i]) + " ";// add the reversed word to the reversed message, with a space at the end so the words dont touch
  }
  return reversedMessage
}
//A helper function that reverses a string
function reverse(s) {
  var o = '';
  for (var i = s.length - 1; i >= 0; i--)
    o += s[i];
  return o;
}

来源:http://eddmann.com/posts/ten-ways-to-reverse-a-string-in-javascript/

with `pop()` ;)
function reverseMessage(string) {
         var array = string.split(" ");
         var result="";
         while (array.length > 0) {
             result += array.pop()+" ";
         }
        console.log(result);
     };