返回字符串 text 中按字典序排列最小的子序列,该子序列包含 text 中所有不同字符一次。
示例 1:
输入:"cdadabcc"
输出:"adbc"
示例 2:
输入:"abcd"
输出:"abcd"
示例 3:
输入:"ecbacba"
输出:"eacb"
示例 4:
输入:"leetcode"
输出:"letcod"
提示:
1 <= text.length <= 1000
text 由小写英文字母组成
题解:
思路:
1、题目要实现的是删除重复字符后,字典序最小的字符串;
2、该类问题,可以采用递增栈的思路来解决;
class Solution {
public:
string smallestSubsequence(string s) {
string stk;
int i = 0;
for (int i = 0; i < s.size(); ++i) {
if (stk.find(s[i]) != string::npos)
continue;
while (stk.size() && stk.back() > s[i] && s.find(stk.back(), i) != string::npos) {
stk.pop_back();
}
stk.push_back(s[i]);
}
return stk;
}
};
博客围绕求字符串 text 中按字典序排列最小的子序列展开,该子序列需包含 text 中所有不同字符一次。给出多个输入输出示例,提示 text 长度及字符组成。题解采用递增栈思路,给出了相应的代码实现。

1874

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



