劍指offer 將字串中的空格替換為20

2021-08-22 02:27:57 字數 693 閱讀 7694

#include #include #include #include #include #include #include #include #include #include using namespace std;

// 將字串中的空格替換成20%

// 從後往前替換,遇到空格就替換為20%,同時指向替換後字串的指標向前移動3個位置,

// 指向替換前字串的指標向前移動1個位置

// 此方法的好處是每個字元只需要移動一次位置

void replaceblabk(char *str, int len)

else

p1 ++;

}newlen = originlen + 2*blank;

// 判斷是否為修改後的字串預留了足夠的記憶體

if(newlen > len)

int indexoforigin = originlen;

int indexofnew = newlen;

//while(indexoforigin <= indexofnew && indexoforigin >= 0)

while(indexoforigin != indexofnew) // 當移動到第乙個空格之前乙個字元時,不再複製,節省執行時間

else

}}int main()

劍指offer 字串替換空格

見到這個題目,我們很容易想到 申請一塊新空間,儲存變化後的字串,顯然不是我們想要的結果 由此,我們可以想到如下方法 1 先遍歷一次字串,統計出字串中空格的總數,並可以由此計算出替換之後字串總長度。每替換乙個空格,長度增加2,因此替換以後字串的長度等於原來的長度加上2乘以空格數目。2 然後從後往前開始...

劍指offer 將字串中空格替換為20

將乙個字串中的所有空格替換成 20 最直觀的做法是從頭到尾掃瞄字串,然後每次碰到空格時便替換,並將空格後面所有的字元向後移兩個位元組。假設字串長度為n,對每個空格字元,需要移動後面o n 個字元,因此對含有n個空格的字串而言總的時間效率是o n 2 時間複雜度達到n平方,說明程式效率並不高,因此可以...

劍指Offer 替換字串中空格

另外一種較好的解法是從後往前替換,具體做法是從頭遍歷計算所有空格數,計算出總的長度。該解法的前提條件是若在源字串上替換就要求源字串有足夠的空間來容納新的字串。時間複雜度為o n 解決辦法一 利用replace函式 將str轉為字串後呼叫replace方法,將空格轉為 20 即可。需要注意的是repl...