Leetcode 316: 去除重复字母 是一道考察贪心思想与栈在字符串操作中使用的经典题目。该题的目标是让结果字符串既是 字典序最小,又不包含重复字符,而且在原字符串中字符的相对顺序要保持不变。下面列举几种解法,并分析其实现方式和时间复杂度。
题目描述
输入:给定一个字符串 s,其中包含小写字母。
输出:返回 s 的一个子序列,该子序列需要满足以下条件:
- 包含原字符串的所有字符(去重后),每个字符只出现一次。
- 所有字符的相对顺序与原字符串中一致。
- 输出字典序最小的结果。
示例输入输出:
输入:s = "bcabc"
输出:"abc"
输入:s = "cbacdcbc"
输出:"acdb"
解法 1:贪心 + 单调栈
思路
- 从后往前构造结果:
- 使用一个栈模拟最终结果字符串。
- 按顺序遍历字符串,将字符加入栈中时确
订阅专栏 解锁全文
451

被折叠的 条评论
为什么被折叠?



