刪除字串中的所有相鄰重複項
給出由小寫字母組成的字串 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 由於兩字母相鄰且...