字串替換空格題目

2021-07-29 03:25:13 字數 921 閱讀 7182

剛看到題目時我的想法就是新建乙個字元陣列,然後遍歷舊的字串時判斷一下,如果不為空格字元就直接複製給新字元陣列,否則就講%20複製給新字元陣列,但是假如僅僅讓在原來的字串上做替換的話,又該如何做呢。

測試通過**如下:

class solution 

i++;

}newlength=oldlength+count*2;

if(newlength>length)

return;

while(newlength>oldlength&&oldlength>=0)

else

oldlength--;

}}};

總結:1、首先做的時候僅僅考慮了從前往後檢測字串,發現空格就新增『%20』,但是這樣複雜度很高,為o(n^2)。但是如果從後往前檢測就大大降低了複雜度。從這點可以學到很多題目其實就是稍微轉換一下思路就可以得到很好的效果。

比如從前往後看不行,就想想從後往前看是不是能行或者說更好。

2、在判斷不為空格時,就將前面指標的值賦值給後面指標,然後我做的時候就新建了兩個字元指標,這也是沒有必要的,因為字元陣列在記憶體中是連續存放的,所以訪問時直接可以由下面得到值,這樣更方便。

3、其次上面程式忘記了判斷輸入字串是否為空或者說字元指標是null指標。

當輸入為字串的時候,需要記著判斷字串是否為null,字串是否是個空字串。當然針對本題還需要想到字串只有乙個空格怎麼辦或者只有連續多個空格怎麼辦。

4、還有一點需要注意,函式的輸出length並不是str內容的長度,也就是說在『\0』後面可能還有很多的空間,想要求得str內容的長度還需遍歷一下str。

5、通過做這一道題發現自己對字串操作的基礎還不夠紮實,這篇文章總結了字元指標和字元陣列的一些區別與聯絡,很全面。

6、這篇文章總結了字串操作的相關函式。

字串替換空格

點 抽象問題簡化問題 題意 乙個字串,比如 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...