Leetcode 316 去除重複字母

2021-10-12 10:37:35 字數 664 閱讀 9775

很典型的一道單調棧題目
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 一開始以為是直接去重,...