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))
添加回答
舉報
