lettcode 去除重複字母

2021-10-06 00:19:45 字數 651 閱讀 4823

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

示例 1:

輸入: "bcabc"

輸出: "abc"

示例 2:

輸入: "cbacdcbc"

輸出: "acdb"

整體的思路是貪心。貪心的結果就是每一步都要保證當前字串的字典序最小。

考慮兩點:

(1)遍歷位置i時的當前值小於棧中前面的值,而且前面的值在原字串中大於i的位置還存在值,那麼就應當將前面的值刪除,相當於選擇了後者放棄了前者,保障了字典序最小。

(2)如果當前的值和棧中之前的值有所重複,就跳過此位置(因為前面儲存下來的一定是符合要求的,除非當前值與前面的值是(1)的關係)

參考官方題解:官方題解

class solution 

data.push(s[i]);}}

string result;

while(!data.empty())

reverse(result.begin(),result.end());

return result;

}};

去除重複字母

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

316 去除重複字母

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

316 去除重複字母

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