給你乙個僅包含小寫字母的字串,請你去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小(要求不能打亂其他字元的相對位置)。
示例 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 分析 這道題就是,第一去重複,第二就是選擇最小的字串。去重複倒是不難,主...