去掉字串中連續出現k個0的子串

2021-10-03 04:37:11 字數 1670 閱讀 2054

【題目】

給定乙個字串s和乙個整數k,如果str中正好有連續的k個』0』字元出現時,把k個連續的』0』字元去除,返回處理後的字串。

【舉例】

s=「a00b」,k=2,返回"ab"。

s=「a0000b000」,k=3,返回"a0000b"。

考慮邏輯分析能力和邊界處理問題。

建立字串s對應的字元陣列arr

count統計連續』0』字元個數,index統計連續』0』字元起始索引

遍歷arr,遇到』0』字元統計數量;

遇到非』0』字元判斷之前連續』0』字元個數是否為k,若為k,則將arrindex ~ index + k -1全部置換為''

最後返回字元陣列arr構成的字串。

時間複雜度為o(n

)o(n)

o(n)

,空間複雜度為o(l

en(s

))

o(len(s))

o(len(

s))

# 去掉字串中連續出現k個0的子串

defremove_k_zeros

(s, k)

:if s is

none

orlen

(s)==

0or k <

1or k >

len(s)

:return s

arr =

list

(s) count =

0# 當前'0'連續個數

index =-1

# 當前'0'起始索引

for i in

range

(len

(arr)):

if arr[i]

=='0'

: count +=

1if index ==-1

: index = i

# 非'0'字元核驗是否清除連續k個0

else

:# 清除連續k個0

if count == k:

for j in

range

(index, index + k)

: arr[j]=''

count =

0 index =-1

if count == k:

for j in

range

(index, index + k)

: arr[j]=''

return

''.join(arr)

# 簡單測試

if __name__ ==

'__main__'

:print

(remove_k_zeros(

"a00b",2

))# "ab"

print

(remove_k_zeros(

"a0000b000",3

))# "a0000b"

去掉字串中連續出現k個0的子串

去掉字串中連續出現k個0的子串 題目 給定乙個字串str和乙個整數k,如果str中正好有連續的k個 0 字元出現時,把k個連續的 0 去掉,返回處理後的字串。舉例 str a00b k 2,返回 a b str a0000b000 k 3,返回 a0000b 解答 使用變數count統計連續出現的0...

去掉字串中連續出現k個0的子串

題目 給定乙個字串str和乙個整數k,如果str中正好有連續的k個 0 字元出現時,把k個連續的 0 字元去除,返回處理後的字串。舉例 str a00b k 2,返回 a002 str a0000b000 k 3,返回 a0000b 難度 思路 對於處理字串各種問題,以前我都是以雙重巢狀著稱,時間複...

字串 去掉字串中連續出現k個0的子串

題目 給定乙個字串str和乙個整數k,如果str中剛好有連續的k個 0 字元出現時,把k個連續的 0 字元刪除,返回處理後的字串。舉例 str a00b k 2,返回 ab str a0000b000 k 3,返回 a0000b 基本思路 使用兩個變數count和start。count表示目前出現的...