我們可以很容易替換字串中的字元。最簡單的辦法莫過於使用兩個陣列,遇到空格便將其替換為%20,然後繼續遍歷第乙個陣列。
#include
"stdafx.h"
#include
#include
using
namespace std;
char
*replacespace
(char
*str,
int length)
;int
_tmain
(int argc, _tchar* ar**)
char
*replacespace
(char
*str,
int length)
int newlen=length+cnt*2;
char
*str2=
newchar
[newlen]
;int j=0;
i=0;while
(istr2[i++
]=str[j++];
}return str2;
}
不過我們還可以用乙個字串陣列來完它。
我們先統計空格數cnt,然後估計出替換後所需的字串陣列所需的長度,即newlen=length+2*cnt
從後往前在原陣列中進行替換。從後往前的好處在於不會改變未遍歷過的原陣列字元
void
replacespace
(char
*str,
int length)
int newlen=length+cnt*2;
while
(newlen>=
0&&length>=0)
else
str[newlen--
]=str[length--];
}}
注意:如果要自己寫算例,要寫為字串陣列的形式,
即char a=「asdf」;這放在棧裡,可以修改,如果寫為
char *a=「asdf」;這是字串常量,放在**段,只能讀取,不能修改。
劍指offer 替換字串
思路 如果直接替換,就有可能覆蓋修改在字串後面的記憶體。如果建立新的字串並在新的字串上做替換,我們就可以分配足夠多的記憶體。對於任何乙個函式,我們要做哪些基本的檢測 1.傳入的引數有效性 2.函式體邊界的判斷 3.返回值正確返回 void replaceblank char str,int leng...
劍指Offer 替換字串
我是鏈結 2.題目描述 將乙個空格字元 替換為三個字元 20 需要三個字元的空間,則在第乙個空格後的字元需要後挪 2 1格,第二個空格後的字元需要後挪2 2格,第三個空格後的字元需要後挪3 2格 依此類 推。4.思路 遍歷字串記錄其中的空格個數,最後再根據空格的順序後挪該空格後的字串,同時替換空格 ...
《劍指offer》字串中的字元替換
char str 字串 int length 字串的長度 length為牛客系統規定字串輸出的最大長度,固定為乙個常數 class solution 分兩步 第一 先查詢字元陣列中有多少個空格,假設有n個空格。增加替換後陣列的長度,因為乙個空格用 20 三個字元去替換,所以每個空格就會是陣列增加2g...