1. 程式人生 > >【LeetCode & 劍指offer刷題】字串題2:5 替換空格

【LeetCode & 劍指offer刷題】字串題2:5 替換空格

【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...)

5 替換空格

題目描述

請實現一個函式,將一個字串中的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。   /* 連結:https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423 來源:牛客網 問題1:替換字串,是在原來的字串上做替換,還是新開闢一個字串做替換!
問題2:在當前字串替換,怎麼替換才更有效率(不考慮java裡現有的replace方法)。       從前往後替換,後面的字元要不斷往後移動,要多次移動,所以效率低下       從後往前,先計算需要多少空間,然後從後往前移動,則每個字元只為移動一次,這樣效率更高一點。 */ class Solution { public
:      void replaceSpace ( char * str , int length )     {         int spacenum = 0 ;        
for ( int i = 0 ; i < length ; i ++) //統計空格數         {             if ( str [ i ] == ' ' ) spacenum ++;         }                 int newlength = length + spacenum * 2 ; //新長度         int indexold = length - 1 , indexnew = newlength - 1 ; //設定新舊兩個指標         for (; indexold >= 0 && indexnew > indexold ; indexold --) //indexold從後往前掃描整個字串         {             if ( str [ indexold ]   == ' ' ) //將空格替換為“20%”             {                 str [ indexnew --] = '0' ;                 str [ indexnew --] = '2' ;                 str [ indexnew --] = '%' ;             }             else                 str [ indexnew --] = str [ indexold ];         }      } };