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



处理字符串中的反向单词

我试图恢复部分字符串,给定输入字符串、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;
}

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

您需要

s+(一个或多个空格(split()。并且join() ' '(空格(不空字符串''.对于leetcode问题,不需要myrev。下面的代码通过了所有对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))

无法修改

字符串
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("");

}

最新更新