为什么“去重”这么简单的问题,90%的人却写错了?——从 Remove Duplicate Letters 看算法思维的本质
很多人第一次看到「去除重复字母(Remove Duplicate Letters)」这个题目时,第一反应通常是:
“这不就是去重吗?一个 set 不就完了?”
但现实是——你一写就错,而且还会错得很“理直气壮”。
今天咱不装高深,就像平时聊天一样,慢慢拆开这个问题,你会发现:
这个题,本质上不是“去重”,而是一个贪心 + 单调栈的经典范式题。
一、问题到底在难什么?
题目要求:
给定一个字符串,删除重复字母,使得每个字母只出现一次,并且结果字典序最小。
注意这两个关键点:
- 每个字符只能出现一次(去重)
- 结果必须是字典序最小
很多人只看到第一个条件,就掉坑里了。
举个例子:
输入: "cbacdcbc"你如果简单去重: