反转不起作用的字符串函数

时间:2015-08-10 16:12:09

标签: javascript string debugging

这是我用来反转字符串的javascript代码。

function FirstReverse(str) { 

    var left = 0
    var right = str.length;

    while (left<right)
    {
       var temp = str[left]
       str[left] = str[right-1]
       str[right-1] = temp

       left ++
       right -- 
    }

    return str;
}

我确信我的程序的逻辑是正确的,因为我之前在C ++上已经完成了,但由于某种原因,可能是在javascript中分配内存的方式,FirstReverse返回原始字符串

当我出错并向我解释时,有些善良的灵魂会向我指出吗?

由于

5 个答案:

答案 0 :(得分:1)

@ CD。的评论:

str.split('').reverse().join('')

做你想要的。 它将每个字符的字符串拆分为数组,反转数组的顺序并将其作为字符串重新连接在一起。

在你的情况下:

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

答案 1 :(得分:0)

如果你走这条路,弦乐几乎是不变的。

在操作此数据之前,您应该做一件事,将您的字符串转换为数组,继续操作数组(使用正确的变量名称)并将数组转换回字符串。

看起来像这样:

function FirstReverse(str) { 
    var left = 0
    var right = str.length;
    var buffer = str.split('');

    while (left<right)
    {
        var temp = buffer[left]
        buffer[left] = buffer[right]
        buffer[right] = temp

        left ++
        right -- 
    }
    return buffer.join('');
}

答案 2 :(得分:0)

JavaScript中的cannot modify strings in-place。一个简单的不同方法是从一个空字符串开始,从右到左添加字符。

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

答案 3 :(得分:0)

这里&#39;是一个与您的代码接近的修复程序:

&#13;
&#13;
function FirstReverse(str) { 

    
    var right = str.length-1;
    var rev="";

    while (right>=0)
    {
       var temp = str[right]
       rev = rev+ temp;
       
       right -- 
    }

    return rev;
}

alert(FirstReverse("abcde"));
&#13;
&#13;
&#13;

但是,这不是最佳实现,但您应该理解。

我们所做的是制作一个新的空白字符串(rev)以保持相反。我们找到最后一个字母(str.length-1)并开始将它添加到结果(rev)字符串中,然后我们减少从1开始的位置,直到我们开始到达字符串。

答案 4 :(得分:0)

这是另一种解决方案。它从字符串的最后一个位置开始并向后计数,一次添加到反向字符串1字符。

TCDeviceIncomingStateOffline