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

2022-08-16 08:45:10 字數 561 閱讀 5625

題目描寫敘述

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

解題思路

這樣的題目從前往後掃瞄的話。須要移動多次。

這樣的情況下從後往前掃瞄。

首先掃瞄一遍。找到空格的個數,算出須要加入多少個20%,即替換後的字串的長度 = 原字串長度 +  空格數*2

準備兩個指標乙個指標p1指向當前字串的最後位置,還有乙個指標p2指向新字串的最後位置。

然後依次向前掃瞄。當遇到空格的時候。p1向前移動乙個位置,p2向前移動三個位置,而且依次用20%替換。

**實現

class solution 

int newlen = originlen + numofblank * 2;

if (newlen > length)

return;

while (originlen >= 0 && newlen > originlen)

else

str[newlen--] = str[originlen];

originlen--;

} }};

劍指offer面試題 替換空格

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

劍指 面試題5 替換空格

題目 請實現乙個函式,把字串 s 中的每個空格替換成 20 思路1 這裡leetcode上c 給出的是乙個string,直接使用string.replace 考慮到乙個字串中可能有多個空格,用string.find 找空格,如果未找到,則返回string.npos。如果是char陣列,可以考慮思路2...

替換空格(劍指offer面試題4)

分析 從頭到尾掃瞄字串,遇到空格就替換,導致後面的字元都要向後移,意味著總時間複雜度為o n 2 更好的辦法,從字串後面遍歷替換。先遍歷所有的空格,每多乙個空格,字串長度加2個,也就是說最後替換後的字串長度為原長度 2 空格數,設定兩個指標,指向原始字串末尾和新字串末尾,依次向前遍歷,原始字串指標遇...