316 去除重複字母

2021-10-10 03:47:37 字數 843 閱讀 7178

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

注意:該題與 1081 相同

示例 1:

輸入:s = 「bcabc」

輸出:「abc」

示例 2:

輸入:s = 「cbacdcbc」

輸出:「acdb」

1 <= s.length <= 104

s 由小寫英文本母組成

這是一道字典序的問題,首先要知道什麼是字典序,leetcode官方解答有。然後就要理解題意了,首先不能打亂原字串的字元排序,還要去重,並且保證字典序最小——也就是所得的字串如果放在字典裡,排序要最前。

貪心-stack

貪心set,利用hashmap來儲存最遠的距離位置,stack儲存結果,最後逆序輸出

為什麼用set符合貪心的思路,貪心已經確定之前的字母放置,一旦放置好說明已經符合條件,後面有重複的元素也不能加上。可能出現這樣一種情況-cdc,這個時候如果不去重最後的c還是會加上去的。但是正確結果就是cd,而利用去重的是 利用貪心演算法,

class solution 

for (int i = 0; i < s.length(); i++)

stack.push(c);

set.add(c);}}

stringbuilder sb = new stringbuilder();

for (char c : stack)

return sb.tostring();

}}

316 去除重複字母

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

316 去除重複字母

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

316 去除重複字母

316.去除重複字母 給你乙個字串s,請你去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小 要求不能打亂其他字元的相對位置 示例 1 輸入 s bcabc 輸出 abc 示例 2 輸入 s cbacdcbc 輸出 acdb 1 s.length 104 s 由小寫英文本母組成...