1209 刪除字串中的所有相鄰重複項 II

2021-10-23 13:37:37 字數 1321 閱讀 4410

給你乙個字串 s,「k 倍重複項刪除操作」將會從 s 中選擇 k 個相鄰且相等的字母,並刪除它們,使被刪去的字串的左側和右側連在一起。

你需要對 s 重複進行無限次這樣的刪除操作,直到無法繼續為止。

在執行完所有刪除操作後,返回最終得到的字串。

本題答案保證唯一。

示例 1:

輸入:s = 「abcd」, k = 2

輸出:「abcd」

解釋:沒有要刪除的內容。

示例 2:

輸入:s = 「deeedbbcccbdaa」, k = 3

輸出:「aa」

解釋:先刪除 「eee」 和 「ccc」,得到 「ddbbbdaa」

再刪除 「bbb」,得到 「dddaa」

最後刪除 「ddd」,得到 「aa」

示例 3:

輸入:s = 「pbbcggttciiippooaais」, k = 2

輸出:「ps」

1 <= s.length <= 10^5

2 <= k <= 10^4

s 中只含有小寫英文本母。

公升級版的糖果消消樂。與1047. 刪除字串中的所有相鄰重複項不同的是可以自定義重複單元的個數

建兩個棧s_item、s_num,s_item用於儲存字串元素,s_num表示s_item中相應位置元素的最大重複數量。比如s_item的元素是[a,c,b,c,c],那麼s_num中的元素是[1,1,1,2,2]

遍歷字串s,會出現以下幾種情況:

s_item是空的,將遍歷元素item壓入s_item,同時將1壓入s_num

s_item非空。

class

solution

:def

removeduplicates

(self, s:

str, k:

int)

->

str:

s_item =

s_num =

for item in s:

ifnot s_item:

# 列表為空1)

else

:# 列表非空

if s_item[-1

]==item:-1

]+1)

if s_num[-1

]==k:

for i in

range

(k):

s_item.pop(

) s_num.pop(

)else:1

)return

''.join(s_item)

1209 刪除字串中的所有相鄰重複項 II

題目描述 給你乙個字串 s,k 倍重複項刪除操作 將會從 s 中選擇 k 個相鄰且相等的字母,並刪除它們,使被刪去的字串的左側和右側連在一起。你需要對 s 重複進行無限次這樣的刪除操作,直到無法繼續為止。在執行完所有刪除操作後,返回最終得到的字串。本題答案保證唯一。示例 1 輸入 s abcd k ...

1209 刪除字串中的所有相鄰重複項 II

給你乙個字串 s,k 倍重複項刪除操作 將會從 s 中選擇 k 個相鄰且相等的字母,並刪除它們,使被刪去的字串的左側和右側連在一起。你需要對 s 重複進行無限次這樣的刪除操作,直到無法繼續為止。在執行完所有刪除操作後,返回最終得到的字串。本題答案保證唯一。import j a.util.scanne...

刪除字串中的所有相鄰重複項

給出由小寫字母組成的字串 s,重複項刪除操作會選擇兩個相鄰且相同的字母,並刪除它們。在 s 上反覆執行重複項刪除操作,直到無法繼續刪除。在完成所有重複項刪除操作後返回最終的字串。答案保證唯一。示例 輸入 abbaca 輸出 ca 解釋 例如,在 abbaca 中,我們可以刪除 bb 由於兩字母相鄰且...