很典型的一道單調棧題目
class
solution
char
stack =
newchar[26
];//棧頂指標
int top =-1
;for
(int i =
0; i < n; i++
)//退棧
//如果棧非空 並且 棧的頭元素大於目前元素 並且 棧的頭元素剩餘個數不為0 ,進行退棧操作
while
(top >=
0&& stack[top]
> s.
charat
(i)&& cnt[stack[top]
-'a'
]>0)
//將當前元素入棧
stack[
++top]
= s.
charat
(i);
//將當前元素標記為 已使用
use[s.
charat
(i)-
'a']
=true;}
return string.
valueof
(stack,
0, top +1)
;}}
leetcode316 去除重複字母
給你乙個字串 s 請你去除字串中重複的字母,使得每個字母只出現一次。需保證 返回結果的字典序最小 要求不能打亂其他字元的相對位置 首先記錄每個元素出現的最後位置。然後建立乙個棧和乙個集合。若當前字元已經在集合 現過了,則跳過該字元 反之,如果棧頂元素大於當前字元,且棧頂元素的最後出現位置在當前位置之...
leetCode 316 去除重複字母
給你乙個字串 s 請你去除字串中重複的字母,使得每個字母只出現一次。需保證 返回結果的字典序最小 要求不能打亂其他字元的相對位置 注意 該題與 1081 相同 示例 1 輸入 s bcabc 輸出 abc 示例 2 輸入 s cbacdcbc 輸出 acdb 先要明白如果在乙個字串中刪去乙個字元需要...
leetcode 316 去除重複字母
中等 給你乙個字串s,請你去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 注意 該題與 leetcode 1081相同 示例 1 輸入 s bcabc 輸出 abc 示例 2 輸入 s cbacdcbc 輸出 acdb 一開始以為是直接去重,...