去除重複字母

2021-10-21 00:27:50 字數 1175 閱讀 2300

給你乙個字串 s ,請你去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小(要求不能打亂其他字元的相對位置)。

示例 1:

輸入:s = 「bcabc」

輸出:「abc」

示例 2:

輸入:s = 「cbacdcbc」

輸出:「acdb」

1 <= s.length <= 10^4

s 由小寫英文本母組成

解法一:棧

class

solution

//如果棧非空,棧頂元素大於當前字元,且棧頂元素在字串後面出現,則去掉

while

(!stack.

isempty()

&& cpeek()

&& s.

indexof

(stack.

peek()

,i)!=-1

) stack.

push

(c);

}char

str=

newchar

[stack.

size()

];for(

int i=

0;isize()

;i++

)return

newstring

(str);}

}

解法二:陣列

class

solution

for(

int i=

0;ilength()

;i++

)else

} res[c-

'a']

=true

; sb.

(c);

} num[c-

'a']-=1

;}return sb.

tostring()

;}}

316 去除重複字母

給定乙個僅包含小寫字母的字串,去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 示例 1 輸入 bcabc 輸出 abc 示例 2 輸入 cbacdcbc 輸出 acdb 我的 超時 class solution string removedu...

316 去除重複字母

給定乙個僅包含小寫字母的字串,去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 示例 1 輸入 bcabc 輸出 abc 示例 2 輸入 cbacdcbc 輸出 acdb 分析 這道題就是,第一去重複,第二就是選擇最小的字串。去重複倒是不難,主...

lettcode 去除重複字母

給你乙個僅包含小寫字母的字串,請你去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 示例 1 輸入 bcabc 輸出 abc 示例 2 輸入 cbacdcbc 輸出 acdb 整體的思路是貪心。貪心的結果就是每一步都要保證當前字串的字典序最小。...