亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何反轉初始字符串并節省空間順序

如何反轉初始字符串并節省空間順序

心有法竹 2022-12-18 16:22:41
如何比我的解決方案更正確地反轉初始字符串并節省空間順序。我需要從初始字符串進行轉換,以將其反轉但保留與初始字符串相同的空格順序 'some text with spaces' //=> "seca psht iwtx etemos"function test(str, result = "") {  let res = str.split('').reverse().join('')  for (let i = 0; i < res.length; i++) {    if (str[i] === " ") {      result += ` ${res[i]}`      str[i + 1];    } else if (str[i] !== " " && res[i] === " ") {      result += ""    } else {      result += res[i];    }  }  return result}console.log(test('some text with spaces')) //=> "seca psht iwtx etemos"
查看完整描述

5 回答

?
慕田峪7331174

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

}


查看完整回答
反對 回復 2022-12-18
?
不負相思意

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'));


查看完整回答
反對 回復 2022-12-18
?
溫溫醬

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(""))


查看完整回答
反對 回復 2022-12-18
?
qq_笑_17

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'))


查看完整回答
反對 回復 2022-12-18
?
慕村9548890

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))


查看完整回答
反對 回復 2022-12-18
  • 5 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號