5 回答
TA贡献1828条经验 获得超13个赞
function test(str) {
const letters = str.split(""); // make array so we can modify it
const spaceIndexes = letters.reduce((arr, letter, index) => {
if (letter === " ") arr.push(index);
return arr;
}, []);
const reversed = letters.filter(l => l !== ' ').reverse(); // reverse and delete spaces
spaceIndexes.forEach((index) => reversed.splice(index, 0, " ")); // insert spaces at previous places
return reversed.join(""); // return as a string
}
TA贡献1777条经验 获得超10个赞
您可以在不拆分的情况下进行一个循环,并从末尾获取非空格字符,如果在新字符串的实际长度处找到一个空格,则插入空格。
function test(str) {
let i = str.length,
s = '';
while (i--) {
if (str[i] === ' ') continue;
while (str[s.length] === ' ') s += ' ';
s += str[i];
}
return s;
}
console.log(test('some text with spaces'));
TA贡献1752条经验 获得超4个赞
let theString = "some text with spaces";
let spaceArr = [] // we will store spaces position in this array
let pos = 0
let strArr = theString.split(" ")
for(let i=0; i<strArr.length-1; i++){
spaceArr.push(pos + strArr[i].length)
pos = pos+1 + strArr[i].length
}
// now lets remove spaces , reverse string, put back orignal spaces
let res = strArr.join("").split("").reverse().join("").split("")
spaceArr.forEach((item,index)=>{
res.splice(item,0," ")
})
console.log(res.join(""))
TA贡献1818条经验 获得超7个赞
不确定是否有比这更好的解决方案。但我现在能想到的最好的
该算法是
找出
indexes给定空间string反转一样
sting按照添加空间
indexes got above并替换任何额外的空间string
function test(str) {
const mapping = {};
const pattern = /\s+/g;
while (match = pattern.exec(str)) {
mapping[match.index] = true;
}
return str.split('').reverse().reduce((acc, cur, index) => {
if(mapping[index]) acc += ' ';
acc += cur.replace(pattern, '');
return acc;
}, '');
}
// seca psht iwtx etemos
console.log(test('some text with spaces'))
TA贡献1884条经验 获得超4个赞
这将以相反的顺序返回所有非空白字母,所有空格都位于原始字符串的位置:
function test(str) {
let i=-1,spaces=[];
while ((i=str.indexOf(' ',i+1))>-1) spaces.push(i); // find space positions
let res=str.replace(/ /g,'').split('').reverse(); // remove spaces and
// turn into array and reverse it
spaces.forEach(i=>res.splice(i,0,' ')) // put spaces back into array
return res.join(''); // turn array to string and return
}
let str="let us try this function.";
console.log(str);
console.log(test(str))
添加回答
举报
