【Leetcode每日一題】316. 去除重複字母(棧,貪心)
Leetcode 每日一題
題目連結: 316. 去除重複字母
難度: 中等
解題思路: 每次當前的字元是否是小於棧頂元素的,若不小於將其pop。還需要記錄某個字元是否已經在棧中出現,若已經出現過則不用在進行比較。
題解:
class Solution:
def removeDuplicateLetters(self, s: str) -> str:
count = collections.Counter(s)
visit = set()
stack = list()
for ch in s:
if ch not in visit:
while len(stack) > 0 and ch < stack[-1]:
if count[stack[-1]] > 0:
visit.remove(stack[-1])
stack.pop(-1)
else:
break
visit.add(ch)
stack.append(ch)
count[ch] -= 1
return "".join(stack)
相關文章
- [Leetcode]316.去除重複字母LeetCode
- LeetCode 316. 去除重複字母 java題解LeetCodeJava
- leetcode 316.去除重複字母 JavaLeetCodeJava
- 316. 去除重複字母
- 力扣-316. 去除重複字母力扣
- 去除重複字母(不同字元的最小序列)問題字元
- LeetCode每日一題:重複 N 次的元素(No.961)LeetCode每日一題
- LeetCode每日一題: 僅僅反轉字母(No.917)LeetCode每日一題
- LeetCode解題記錄(貪心演算法)(一)LeetCode演算法
- LeetCode每日一題: 轉換成小寫字母(No.709)LeetCode每日一題
- leetcode1546題解【字首和+貪心】LeetCode
- leetcode【每日一題】242. 有效的字母異位詞 javaLeetCode每日一題Java
- LeetCode每日一題: 反轉字串中的母音字母(No.345)LeetCode每日一題字串
- LeetCode每日一題:刪除排序陣列中的重複項(No.26)LeetCode每日一題排序陣列
- 20241108,LeetCode 每日一題,用 Go 計算字串中最長無重複字元LeetCode每日一題Go字串字元
- 力扣 leetcode 435. 無重疊區間 貪心力扣LeetCode
- LeetCode:動態規劃+貪心題目整理LeetCode動態規劃
- leetcode1552題解【二分+貪心】LeetCode
- Leetcode 貪心:差值調整LeetCode
- 1413D. Shurikens(貪心,棧)3D
- leetcode每日一題LeetCode每日一題
- LeetCode解題記錄(貪心演算法)(二)LeetCode演算法
- leetcode刷題.763. 劃分字母區間.每日打卡LeetCode
- 貪心例題
- Leetcode每日一題(1)LeetCode每日一題
- 每日leetcode——155. 最小棧LeetCode
- List中去除重複物件物件
- [貪心]最大線段重疊
- 【每日一題】無重複字元的最長子串每日一題字元
- 反悔貪心雜題
- 每日一道演算法題--leetcode 26--刪除排序陣列中重複項--python演算法LeetCode排序陣列Python
- python中列表如何去除重複Python
- mongodb如何去除重複資料MongoDB
- [每日一題] 第十九題:陣列中重複的數字每日一題陣列
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元
- 貪心-刪數問題
- 刪數問題(貪心)
- 「貪心」做題記錄