这是我用来反转字符串的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返回原始字符串
当我出错并向我解释时,有些善良的灵魂会向我指出吗?由于
答案 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;是一个与您的代码接近的修复程序:
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;
但是,这不是最佳实现,但您应该理解。
我们所做的是制作一个新的空白字符串(rev)以保持相反。我们找到最后一个字母(str.length-1)并开始将它添加到结果(rev)字符串中,然后我们减少从1开始的位置,直到我们开始到达字符串。
答案 4 :(得分:0)
这是另一种解决方案。它从字符串的最后一个位置开始并向后计数,一次添加到反向字符串1字符。
TCDeviceIncomingStateOffline