Javascript恢复部分字符串不起作用?

问题描述 投票:0回答:2

致力于这个reverse words in string

我试图恢复部分字符串,给定输入字符串,start_index,end_index,但似乎没有效果。

var myrev = function(str, s, e) {
    let tmp;
    while(s<e) {
        tmp = str[s];        
        str[s] = str[e];        
        str[e] = tmp;

        s++;
        e--;
    }

    return str;
}

完整代码

// revert the words in this string: " the  sky is   blue "
var reverseWords = function(s) {
    let a = s.trim().replace(/\s+/g, ' ');
    a = a.split('');

    // s === "eulb si yks eht"
    s = a.reverse().join('');

    let i, j, ind;
    ind = s.indexOf(' ', 0);
    i=0;
    j=ind-1;

    // expect s === "blue si yks eht", but still "eulb si yks eht", why???????
    s = myrev(s, i, j);

    console.log(s)
};


var myrev = function(str, s, e) {
    let tmp;
    while(s<e) {
        tmp = str[s];        
        str[s] = str[e];        
        str[e] = tmp;

        s++;
        e--;
    }

    return str;
}

我似乎需要传递一个字符串作为参考吗?

javascript string reverse
2个回答
0
投票

你需要split()(一个或多个空间)\s+。和join()' '(空白)不是空字符串''myrev不需要leetcode问题。下面的代码传递了leetcode的所有测试。

var reverseWords = function(s) {
    return s.trim().split(/\s+/).reverse().join(' ')
};

符号str[index]仅用于访问该索引处的字符串。更改它不会改变字符串。您可以先将字符串转换为字母数组,然后在结尾处使用join()

var myrev = function(str, s, e) {
    str = [...str]
    let tmp;
    while(s<e) {
        tmp = str[s];        
        str[s] = str[e];        
        str[e] = tmp;
        s++;
        e--;
    }
    return str.join('');
}

console.log(myrev("eulb si yks eht",0,3))

0
投票

字符串无法修改

var myrev = function(str, s, e) {
let tmpArr = str.split("")
while(s<e) {
    tmp = tmpArr[s];        
    tmpArr[s] = tmpArr[e];        
    tmpArr[e] = tmp;
    s++;
    e--;
}
return tmpArr.join("");

}

© www.soinside.com 2019 - 2024. All rights reserved.