字串空格替換 C實現

2021-10-05 20:27:57 字數 1268 閱讀 7914

題目:輸入乙個字串和待替換的字串,將字串中的空格替換成待替換的字串。

程式分析:

(1)查詢空格時,從前往後查詢。

(2)替換空格時,先計算需要多少空間,然後從後往前移動,則每個字元只為移動一次,這樣效率更高一點。

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()

c執行結果:

程式設計小提示

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...