題目描寫敘述
請實現乙個函式,將乙個字串中的空格替換成「%20」。
解題思路
這樣的題目從前往後掃瞄的話。須要移動多次。
這樣的情況下從後往前掃瞄。
首先掃瞄一遍。找到空格的個數,算出須要加入多少個20%,即替換後的字串的長度 = 原字串長度 + 空格數*2
準備兩個指標乙個指標p1指向當前字串的最後位置,還有乙個指標p2指向新字串的最後位置。
然後依次向前掃瞄。當遇到空格的時候。p1向前移動乙個位置,p2向前移動三個位置,而且依次用20%替換。
**實現
class solutionint 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 空格數,設定兩個指標,指向原始字串末尾和新字串末尾,依次向前遍歷,原始字串指標遇...