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

2021-10-08 11:11:35 字數 914 閱讀 9550

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

給出由小寫字母組成的字串 s,重複項刪除操作會選擇兩個相鄰且相同的字母,並刪除它們。

在 s 上反覆執行重複項刪除操作,直到無法繼續刪除。

在完成所有重複項刪除操作後返回最終的字串。答案保證唯一。

示例:輸入:「abbaca」

輸出:「ca」

解釋:例如,在 「abbaca」 中,我們可以刪除 「bb」 由於兩字母相鄰且相同,這是此時唯一可以執行刪除操作的重複項。之後我們得到字串 「aaca」,其中又只有 「aa」 可以執行重複項刪除操作,所以最後的字串為 「ca」。

1 <= s.length <= 20000

s 僅由小寫英文本母組成。

這個題像是簡化版的消消樂遊戲。資料是一維的,一次只消除兩個。

新建乙個空的棧

遍歷輸入的字串,如果當前的字串與棧頂的元素相同,則彈出棧頂的元素。否則,將遍歷的元素壓入棧中。

這一步可以兩個方向實現:

1)棧不為空且棧頂元素等於遍歷元素,彈出棧頂元素;否則,壓入棧。

2)棧為空且棧頂元素不等於遍歷元素,壓入棧;否則,彈出棧頂元素。

class

solution

:def

removeduplicates

(self, s:

str)

->

str:

stack =

for item in s:

iflen

(stack)

>

0and stack[-1

]== item:

# 同時判斷兩個邏輯,可以減少一行**

stack.pop(-1

)else

:return

''.join(stack)

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

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

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

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

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

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