《劍指offer》 005 替換字串中的空格

2021-08-14 19:12:52 字數 929 閱讀 7136

《劍指offer》–目錄索引

題目:

思路:

這道題的難點在於要求使用o(n)的演算法,不然很簡單直接使用暴力替換;

①首先遍歷一遍字串,計算出字串中的空格數count,則新的字串的長度len=原字串長度length+2*count;(這裡說新字串和原字串是為了方便解釋,實際上都是同乙個字串或者說都在同乙個陣列上,只不過字串末尾的下標不一樣,原字串的末尾下標是length-1,新字串的末尾下標是len-1)

②再從這兩個字串的末尾,即兩個下標i=length-1;j=len-1;處開始從後往前遍歷一遍,在遍歷的過程中遇到空格就連續替換成『0』『2』『%』,具體如下**:

}len=length+2*count;//實際所需字串長度

i=length-1;

j=len-1;

while(i >= 0 && j >= 0)

else}}

測試**:

void test()//測試**

int main()

執行結果:

劍指offer 替換字串

思路 如果直接替換,就有可能覆蓋修改在字串後面的記憶體。如果建立新的字串並在新的字串上做替換,我們就可以分配足夠多的記憶體。對於任何乙個函式,我們要做哪些基本的檢測 1.傳入的引數有效性 2.函式體邊界的判斷 3.返回值正確返回 void replaceblank char str,int leng...

劍指Offer 替換字串

我是鏈結 2.題目描述 將乙個空格字元 替換為三個字元 20 需要三個字元的空間,則在第乙個空格後的字元需要後挪 2 1格,第二個空格後的字元需要後挪2 2格,第三個空格後的字元需要後挪3 2格 依此類 推。4.思路 遍歷字串記錄其中的空格個數,最後再根據空格的順序後挪該空格後的字串,同時替換空格 ...

劍指offer 字串替換空格

見到這個題目,我們很容易想到 申請一塊新空間,儲存變化後的字串,顯然不是我們想要的結果 由此,我們可以想到如下方法 1 先遍歷一次字串,統計出字串中空格的總數,並可以由此計算出替換之後字串總長度。每替換乙個空格,長度增加2,因此替換以後字串的長度等於原來的長度加上2乘以空格數目。2 然後從後往前開始...