字串問題 字串的調整與替換

2021-08-07 03:37:17 字數 1603 閱讀 5121

【題目】

給定乙個字元型別的陣列chas,chas的右半區全是空字元,左半區不含有空字元。現在想將左半區中所有的空格字元替換成「%20」,假設chas的右半區足夠大,可以滿足替換所需要的空間,請完成替換函式。要求時間複雜度o(n),空間複雜度o(1)。

【補充題目】

給定乙個字元型別的陣列chas,其中只含有數字字元和『 * 』字元。現在想將所有的 『 * 』字元都放在chas的左邊,數字字元放在chas 的右邊。請完成調整函式。

【基本思路】

以上兩個題目都是利用倒著複製的技巧。

對於原問題首先求出左半區的長度length,然後求出空格字元的個數num,進而可以求出替換後的有效長度,即newlen = length + num * 2。然後從chas的最後乙個有效字元開始倒著遍歷,同時將字元複製到新長度的最後位置,並依次倒著向左複製。遇到空格字元就依次把『0』,『2』,『%』進行複製。

對於補充問題。同樣是從右到左倒著複製,遇到數字字元就直接複製,遇到『 * 』不複製。當把數字字元複製完,陣列的其餘部分都設定成『 * 』。

下面是使用python3.5實現的**

#字串的調整與替換

#原問題

defadjustandreplace

(chas):

if chas == none

or len(chas) == 0:

return chas

length = 0

num = 0

for i in range(len(chas)):

if chas[i] != '':

length += 1

if chas[i] == ' ':

num += 1

else:

break

newlen = length + 2 * num

for i in range(length-1, -1, -1):

if chas[i] != ' ':

chas[newlen-1] = chas[i]

newlen -= 1

else:

chas[newlen-1] = '0'

chas[newlen-2] = '2'

chas[newlen-3] = '%'

newlen -= 3

return

''.join(chas)

#補充問題

defmodify

(chas):

if chas == none

or len(chas) == 0:

return chas

n = len(chas)

for i in range(len(chas)-1, -1, -1):

if chas[i] != '*':

chas[n-1] = chas[i]

n -= 1

for i in range(n-1, -1, -1):

chas[i] = '*'

return chas

字串問題 字串的統計字串

題目 給定乙個字串str,返回str的統計字串。例如,aaabbadddffc 的統計字串為 a 3 b 2 1 d 3 f 2 c 1 補充題目 給定乙個字串的統計字串cstr,再給定乙個整數index,返回cstr所代表的原始字串上第index個字元。例如,a 1 b 100 所代表的原始字串上...

字串的調整與替換

題目 給定乙個字元型別的陣列chas,chas右半區全是空字元,左半區不含有空字元。現在想將左半區中所有的空格字元替換成 20 假設chas右半區足夠大,可以滿足替換所需要的空間,請完成替換函式。舉例 如果把chas的左半區看作字串,為 a b c 假設chas的右半區足夠大。替換後,chas的左半...

演算法題 字串空格替換

描述 請編寫乙個方法,將字串中的空格全部替換為 20 假定該字串有足夠的空間存放新增的字元,並且知道字串的真實長度 小於等於1000 同時保證字串由大小寫的英文本母組成。給定乙個string inistring 為原始的串,以及串的長度 int len,返回替換後的string。測試樣例 mr jo...