字串結束標誌 字串 替換空格

2021-10-16 05:31:22 字數 952 閱讀 1347

遇到對字串或者陣列做填充或刪除的操作時,都要想想從後向前操作怎麼樣。

請實現乙個函式,把字串 s 中的每個空格替換成"%20"。

如果想把這道題目做到極致,就不要只用額外的輔助空間了!

首先擴充陣列到每個空格替換成"%20"之後的大小。

然後從後向前替換空格,也就是雙指標法,過程如下:

i指向新長度的末尾,j指向舊長度的末尾。

有同學問了,為什麼要從後向前填充,從前向後填充不行麼?

從前向後填充就是o(n^2)的演算法了,因為每次新增元素都要將新增元素之後的所有元素向後移動。

「其實很多陣列填充類的問題,都可以先預先給陣列擴容帶填充後的大小,然後從後向前進行操作。」

這麼做有兩個好處:

不用申請新陣列。

從後向前填充元素,避免了從前先後填充元素要來的 每次新增元素都要將新增元素之後的所有元素向後移動。

class solution
在c++中,提供乙個string類,string類會提供 size介面,可以用來判斷string類字串是否結束,就不用'0'來判斷是否結束。

例如這段**:

string a = "asd";for (int i = 0; i
那麼vector< char > 和 string 又有什麼區別呢?

所以想處理字串,我們還是會定義乙個string型別。

-------end-------

,裡面還有leetcode刷題攻略、各個型別經典題目刷題順序、思維導圖看一看一定會有所收穫!

@**隨想錄期待你的關注!

C 字串和字串結束標誌

用乙個字元陣列可以存放乙個字串中的字元 如 char str 12 為了測定字串的實際長度,c 規定了乙個 字串結束標誌 以字元 0 代表 在上面的陣列中,第11個字元為 0 就表明字串的有效字元為其前面的10個字元 也就是說,遇到字元 0 就表示字串到此結束,由它前面的字元組成字串 對乙個字串常量...

字串替換空格

點 抽象問題簡化問題 題意 乙個字串,比如 aaa baea erwe dsa dsa f a 替換其中的空格字元為 20 劍指offer面試題4 思路 這個問題的點在於,如果正常從頭到尾替換的話,每乙個被替換空格,它後面的全部字串都需要做整體移動 所以要設法想出,怎麼能夠減少字串移動 非空格字元需...

替換空格(字串)

思路一 利用string類的replaceall方法 public class solution 思路二 將字串轉換為字元陣列 建立乙個新的stringbuffer的物件,遍歷字元陣列,將不為空格的字元直接存入 當遇到空格時,存入 20 public class solution return st...