給你乙個字串 s ,請你去除字串中重複的字母,使得每個字母只出現一次。需保證 返回結果的字典序最小(要求不能打亂其他字元的相對位置)。這是一道字典序的問題,首先要知道什麼是字典序,leetcode官方解答有。然後就要理解題意了,首先不能打亂原字串的字元排序,還要去重,並且保證字典序最小——也就是所得的字串如果放在字典裡,排序要最前。注意:該題與 1081 相同
示例 1:
輸入:s = 「bcabc」
輸出:「abc」
示例 2:
輸入:s = 「cbacdcbc」
輸出:「acdb」
1 <= s.length <= 104
s 由小寫英文本母組成
貪心-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 由小寫英文本母組成...