处理字符串中的反向单词
我试图恢复部分字符串,给定输入字符串、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("");
}