LeetCode 1209. Remove All Adjacent Duplicates in String II 有坑
Given a string s
, a k duplicate removal consists of choosing k
adjacent and equal letters from s
and removing them causing the left and the right side of the deleted substring to concatenate together.
We repeatedly make k
duplicate removals on s
until we no longer can.
Return the final string after all such duplicate removals have been made.
It is guaranteed that the answer is unique.
Example 1:
Input: s = "abcd", k = 2 Output: "abcd" Explanation: There's nothing to delete.
Example 2:
Input: s = "deeedbbcccbdaa", k = 3 Output: "aa" Explanation: First delete "eee" and "ccc", get "ddbbbdaa" Then delete "bbb", get "dddaa" Finally delete "ddd", get "aa"
Example 3:
Input: s = "pbbcggttciiippooaais", k = 2 Output: "ps"
Constraints:
1 <= s.length <= 10^5
2 <= k <= 10^4
s
only contains lower case English letters.
-------------------------
有小坑,注意是每次==k而不是>=k
class Solution:
def removeDuplicates(self, s: str, k: int) -> str:
sta = []
for ch in s:
if (sta and sta[-1][1] == k):
sta.pop()
if (sta and sta[-1][0] == ch):
sta[-1][1] += 1
else:
sta.append([ch,1])
if (sta and sta[-1][1] == k):
sta.pop()
res = ''
for ch,cnt in sta:
res += ch*cnt
return res
相關文章
- [leetcode]remove-duplicates-from-sorted-array-iiLeetCodeREM
- [LeetCode] 80. Remove Duplicates from Sorted Array IILeetCodeREM
- Leetcode 26 Remove Duplicates from Sorted ArrayLeetCodeREM
- LeetCode 83. Remove Duplicates from Sorted ListLeetCodeREM
- Leetcode Remove Duplicates型別題目 (python)LeetCodeREM型別Python
- Leetcode 442. Find All Duplicates in an ArrayLeetCode
- Remove-duplicates-from-sorted-arrayREM
- Remove-duplicates-from-sorted-listREM
- LeetCode 438. Find All Anagrams in a StringLeetCode
- LeetCode 394. Decode String All In OneLeetCode
- 【leetcode】26. Remove Duplicates from Sorted Array 刪除有序陣列的重複元素LeetCodeREM陣列
- LeetCode C++ 316. Remove Duplicate Letters【Stack/Greedy/String】中等LeetCodeC++REM
- [LeetCode] 2134. Minimum Swaps to Group All 1s Together IILeetCode
- LeetCode 83.Remove Duplicates from Sorted List(從已排序連結串列中除去重複) Easy/Linked ListLeetCodeREM排序
- (轉)leetcode:Find All Anagrams in a String 滑動視窗方法總結LeetCode
- [leetcode]remove-elementLeetCodeREM
- leetcode-27. Remove ElementLeetCodeREM
- Leetcode 27 Remove-ElementLeetCodeREM
- [LintCode/LeetCode] Remove Duplicate LettersLeetCodeREM
- [LeetCode] 402. Remove K DigitsLeetCodeREMGit
- 力扣-1209. 刪除字串中的所有相鄰重複項 II力扣字串
- JavaScript string charCodeAt() vs codePointAt() All In OneJavaScript
- Leetcode 203. Remove Linked List ElementsLeetCodeREM
- LeetCode | 203. Remove Linked List ElementsLeetCodeREM
- [LeetCode] Rotate StringLeetCode
- LeetCode Patching Array All In OneLeetCode
- #442-Find All Duplicates in an Array-陣列中重複的數字陣列
- JavaScript object array sort by string bug All In OneJavaScriptObject
- Leetcode 19 Remove Nth Node From End of ListLeetCodeREM
- [LeetCode] 2487. Remove Nodes From Linked ListLeetCodeREM
- leetcode-90. Subsets IILeetCode
- Leetcode 40 Combination Sum IILeetCode
- Leetcode 213 House Robber IILeetCode
- LeetCode 1103[分糖果II]LeetCode
- Leetcode 481 Magical StringLeetCode
- Leetcode 30 Substring with Concatenation of All WordsLeetCode
- [LeetCode] 210. Course Schedule IILeetCode
- [LeetCode] 305. Number of Islands IILeetCode