【題目】
給定乙個字串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
,則將arr
中index ~ 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表示目前出現的...