題目:輸入乙個字串和待替換的字串,將字串中的空格替換成待替換的字串。
程式分析:
(1)查詢空格時,從前往後查詢。
(2)替換空格時,先計算需要多少空間,然後從後往前移動,則每個字元只為移動一次,這樣效率更高一點。
c**:
c執行結果:#define _crt_secure_no_warnings
#include
void
replacespace
(char
*str,
int length,
char
*ch,
int chlength)
//查詢空格數目
int numspace =0;
int oldlength =0;
for(
int i =
0; i
//空格替換
int newlength = oldlength +
(chlength -1)
* numspace;
while
(oldlength >=
0&& newlength>oldlength)
else
oldlength--;}
}int
main()
程式設計小提示:
1、**第37行,切不可寫成如下形式:
否則,字串中不能輸入空格。scanf
("%s"
,str)
;
另附:在c/c++中輸入包含空格的字串的方法
2、**第25行,切不可寫成如下形式:
否則,其執行結果為:str[newlength--
]= ch[clength--
];
當輸入的字串為***時,ch此時包含結束符『\0』,因此求出的clength為4;
若**中寫成ch[clength–],這時先賦值、後- -;
相當於把ch[4]=『\0』賦值給str;
最終輸出str時,以』\0』為結尾進行輸出,得不到想要的答案。
字串替換空格
點 抽象問題簡化問題 題意 乙個字串,比如 aaa baea erwe dsa dsa f a 替換其中的空格字元為 20 劍指offer面試題4 思路 這個問題的點在於,如果正常從頭到尾替換的話,每乙個被替換空格,它後面的全部字串都需要做整體移動 所以要設法想出,怎麼能夠減少字串移動 非空格字元需...
替換空格(字串)
思路一 利用string類的replaceall方法 public class solution 思路二 將字串轉換為字元陣列 建立乙個新的stringbuffer的物件,遍歷字元陣列,將不為空格的字元直接存入 當遇到空格時,存入 20 public class solution return st...
字串 替換空格
方法 從後往前替換,先求出字串總長度 空格數 新字串長度,然後兩個指標分別指向原始字串末尾和新字串末尾,依次替換,遇到空格時則替換為 0 2 include includevoid replaceblank char string,int length int newlength originall...