Skip to content

Files

Latest commit

Apr 22, 2025
588c8b1 · Apr 22, 2025

History

History
59 lines (43 loc) · 1.53 KB

0316-remove-duplicate-letters.adoc

File metadata and controls

59 lines (43 loc) · 1.53 KB

316. 去除重复字母

给你一个字符串 s,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

示例 1:

输入:s = "bcabc"
输出:"abc"

示例 2:

输入:s = "cbacdcbc"
输出:"acdb"

提示:

  • 1 <= s.length <= 104

  • s 由小写英文字母组成

思路分析

先遍历字符串,统计每个字符的出现次数。然后依次添加,遇到当前字符小于上次字符时,在上次字符在剩余字符串中还有时,则将上述字符“弹出”。循环弹出,直到循环结束。添加当前字符,记录添加状态。

注意,在遍历字符时,向前走一步,则当前字符的次数就要减一。

一刷
link:{sourcedir}/_0316_RemoveDuplicateLetters.java[role=include]
二刷
link:{sourcedir}/_0316_RemoveDuplicateLetters_2.java[role=include]