【題目】
給定乙個字串str和乙個整數k,如果str中剛好有連續的k個『0』字元出現時,把k個連續的『0』字元刪除,返回處理後的字串。
【舉例】
str = 「a00b」,k = 2,返回 「ab」。
str = 「a0000b000」,k = 3,返回 「a0000b」。
【基本思路】
使用兩個變數count和start。count表示目前出現的連續『0』的個數,start表示連續個『0』出現的開始的位置。初始時,count = 0,start = -1。
從左到右依次遍歷str,假設遍歷到i的位置的字元為char,情況分析如下:
1)如果char是字元『0』,此時更新start的值,如果start = -1 ,說明之前沒處在發現連續的 『0』的階段,那麼令start = i,否則start不變。同時令count加1。
2)如果char不是字元『0』,此時為去掉連續 『0』的階段。首先看此時count的值是否等於k,如果等於的話,說明之前出現的字元 『0』的個數正好為k,刪除這些連續的 『0』;如果不等於的話,不必刪除。最後令count = 0,start = -1。
3)既然把去掉 『0』的時機放在了char不是字元 『0』的時候,那麼str如果以k個 『0』結尾的話,這個連續的 『0』就不會刪除,所以在最後要再次判斷一下count。
下面是使用python3.5實現的**
#去掉字串中連續出現k個0的子串
defremovekzeros
(str1, k):
if str1 == none
or k < 1:
return str1
count = 0
start = -1
chas = list(str1)
for i in range(len(chas)):
if chas[i] == '0':
count += 1
start = i if start == -1
else start
else:
if count == k:
while count > 0:
chas[start] = ""
start += 1
count -= 1
count = 0
start = -1
if count == k:
while count > 0:
chas[start] = ""
start += 1
count -= 1
return
''.join(chas)
去掉字串中連續出現k個0的字串
給定乙個字串s和乙個整數k,如果s中正好有連續的k個 0 字元出現,把k個 0 字元去掉,返回處理後的字串。如s a00b k 2,返回 ab s a0000b000 k 3,返回 a0000b 維護乙個計數count,表示找到幾個連續的 0 維護找到的第乙個 0 的位置start,遍歷字串,過程中...
字串問題 去掉字串中連續出現K個0的子串
給定乙個字串str,和乙個整數k,如果str中正好有連續k 個 0 字元出現,把連續的 k 個 0 去掉,返回處理後的子串。解題思路 1.定義兩個變數,count表示 0 連續出現的次數,start表示連續出現的開始位置,2.將去掉連續0 的時機放在了當前字元不是 0 的情況 3.因此對於最後可能以...
字串 去掉字串中連續出現k個0的子串
題目 給定乙個字串str和乙個整數k,如果str中剛好有連續的k個 0 字元出現時,把k個連續的 0 字元刪除,返回處理後的字串。舉例 str a00b k 2,返回 ab str a0000b000 k 3,返回 a0000b 基本思路 使用兩個變數count和start。count表示目前出現的...