leetcode443(壓縮字串)

2021-10-01 17:25:13 字數 2551 閱讀 1753

給定一組字元,使用原地演算法將其壓縮。

壓縮後的長度必須始終小於或等於原陣列長度。

陣列的每個元素應該是長度為1 的字元(不是 int 整數型別)。

在完成原地修改輸入陣列後,返回陣列的新長度。

高階:你能否僅使用o(1) 空間解決問題?

示例 1:

輸入:[「a」,「a」,「b」,「b」,「c」,「c」,「c」]

輸出:返回6,輸入陣列的前6個字元應該是:[「a」,「2」,「b」,「2」,「c」,「3」]

說明:"aa"被"a2"替代。"bb"被"b2"替代。"ccc"被"c3"替代。

示例 2:

輸入:[「a」]

輸出:返回1,輸入陣列的前1個字元應該是:[「a」]

說明:沒有任何字串被替代。

示例 3:

輸入:[「a」,「b」,「b」,「b」,「b」,「b」,「b」,「b」,「b」,「b」,「b」,「b」,「b」]

輸出:返回4,輸入陣列的前4個字元應該是:[「a」,「b」,「1」,「2」]。

說明:由於字元"a"不重複,所以不會被壓縮。"bbbbbbbbbbbb"被「b12」替代。

注意每個數字在陣列中都有它自己的位置。

注意:所有字元都有乙個ascii值在[35, 126]區間內。

1 <= len(chars) <= 1000。

*

/c++

class

solution

return cur;}}

;class

solution

} cnt =0;

}}return len;}}

;*/python 解法

class

solution

: def compress

(self, chars: list[str])-

>

int:

cur =

0 i,j=0,

0 n =

len(chars)

while i < n :

while

(j < n)

and(chars[j]

== chars[i]):

j = j +

1 chars[cur]

= chars[i]

cur = cur +

1if j-i ==1:

i = j

continue

for c in str

(j-i)

: chars[cur]

=c cur = cur +

1 i=j

return cur

*/class

solution

: def compress

(self,chars:list[str])-

>

int:

count =

1 length =

len(chars)

for index in range

(length-1,

-1,-

1):if index >

0and chars[index]

== chars[index-1]

: count +=1

else

: end = index+count

chars[index:end]

=[chars[index]

]if count ==

1else

[chars[index]]+

list

(str

(count)

) count =

1return

len(chars)*/

class

solution

: def compress

(self,chars:list[str])-

>

int:

p=0 w=

0 count=

1while p<

len(chars)

:if p==

len(chars)-1

or chars[p]

!= chars[p+1]

:if count!=1:

s = chars[p]

+str

(count)

else

: s = chars[p]

for i in s:

chars[w]

= i w +=1

count=

1else

: count +=1

p +=1

return w

LeetCode 443 壓縮字串

給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣列的前6個...

leetcode 443 壓縮字串

題目描述 給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回6,輸入陣...

LeetCode 443 壓縮字串

題目描述 給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?輸入示例1 輸入 a a b b c c c 輸出 返回6,輸入...