面試之路(20) 字串中空格替換一類問題詳解

2022-04-07 11:40:24 字數 798 閱讀 8085

實現乙個函式,把字串中的空格替換為%20,例如「we are happy」,轉換為「we%20are%20happy」

遍歷的方法,時間複雜度是nn 採用雙指標,從後往前複製陣列,遍歷統計空格,每增加乙個空格,陣列長度增加2,設定聯兩個指標p1,p2,p1指向舊陣列的末尾,p2指向新陣列的末尾,根據末尾是否是空格分類複製public void replaceblank(char string,int length)

//儲存字串的實際長度

int originlength = 0;

int numberofblank = 0;

int i = 0;

while(string[i] != '\0')

i++;

}int newlength = originlength + numberofblank*2;

//在劍指offer中,此處是newlength > length,我感覺是它錯了,歡迎指正

if(newlength + 1 > length)

int indexold = originlength;

int indexnew = newlength;

//劍指offer中這裡,我=

while(indexold > 0 || indexnew >= indexold)else

indexold--;

}}輸入空格在最前,最後,中間,連續 不含空格 字串是null,內容是空,只保含空格

兩個已經排序陣列a1,a2,假設a1的空間足夠大,a2插入a1

合併或者插入陣列或者字串,從後往前,採用雙指標

替換字串中空格

如 輸入 i love you baby 輸出 i20 love 20you 20baby 時間複雜度為o n 解法,先遍歷一遍陣列計算出空格數量,由於替換乙個空格需要多增加2個位元組,所以替換後增加位元組數應該為 n 2 sum space 然後使用兩個指標分別指向原來字串的末尾和替換後新字串的末...

劍指Offer 替換字串中空格

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

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

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