面試題 劍指offer04 替換字串中的空格

2021-08-01 02:00:55 字數 1304 閱讀 1036

請實現乙個函式,把字串中的每個空格替換成「%20」。

首先,我們可以畫圖來表示:

當我們需要將空格換成%20 的時候,則乙個空格就要變成三個空格來替換成%20,如圖所示:

**實現的時候,並不是變成三個,而是每有乙個空格,則就在將原來的長度上增加2倍的空格的長度。

newlen = oldlen + blanknum * 2;
在實現**的時候,首先要定義算出原來的長度oldlen,字串中的空格的個數banknum,根據空格的個數算出替換字串後的新陣列的長度

第一步是計算原陣列的長度和空格的個數:

while (arr[oldlen] != '\0')//當沒有到字串結尾處時,繼續執行

oldlen++;//只要陣列沒有到達結尾,length1就增加1

}

接下來就是進行空格的替換:

while (oldback != 0)

else

oldback--;

newback--;

}

還有列印陣列的函式的實現。

以下是完整的**:

//請實現乙個函式,把字串中的每個空格替換成「%20」。

#includeusing namespace std;

#includevoid replaceblank(char *arr)

oldlen++;//只要陣列沒有到達結尾,length1就增加1

} newlen = oldlen + blanknum * 2;//替換空格後的陣列的長度等於原來的長度+空格的長度乘以2

oldback = oldlen - 1;

newback = newlen - 1;

while (oldback != 0)

else

oldback--;

newback--; }}

void printarr(char arr)//列印陣列的函式

cout << endl;

}int main()

**實現的結果:

面試題04 替換空格 劍指Offer系列

題目描寫敘述 請實現乙個函式,將乙個字串中的空格替換成 20 解題思路 這樣的題目從前往後掃瞄的話。須要移動多次。這樣的情況下從後往前掃瞄。首先掃瞄一遍。找到空格的個數,算出須要加入多少個20 即替換後的字串的長度 原字串長度 空格數 2 準備兩個指標乙個指標p1指向當前字串的最後位置,還有乙個指標...

劍指offer面試題 替換空格

題目 請實現乙個函式,把字串中的每個空格替換成 20 例如輸入 則輸出 解析 時間複雜度為o n 的解法。完整 及測試用例實現 cpp view plain copy include using namespace std include length 為字元陣列string的總容量 void re...

劍指Offer04 字串空格替換

由於陣列在定義時必須指定其長度,因此必須先統計有多少個空格,然後計算新陣列的長度為 length 2 空格數 因為 20佔三個位置,而原來的空格佔乙個位置。然後從頭或者從尾遍歷依次將原字串中字元複製到新的數字中,遇到 時新陣列依次複製三個字元 2 0 public class code004 pri...