【发布时间】:2015-12-27 01:32:34
【问题描述】:
从字符串中删除所有重复项并选择可能的字典最小字符串。例如,字符串 cbacdcbc 将返回 acdb,而不是 adcb。
因此,如果我们不必选择字典最小的字符串,这有一个相对简单的解决方案,但考虑到这一事实,我不确定如何找到一个有效的解决方案。这是我目前所拥有的:
string removeDuplicateLetters(string s)
{
vector<bool> v(26,0);
for(int i = 0; i < s.size(); i++) {
v[s[i]-'a'] = 1;
}
string ss = "";
for(int i = 0; i < s.size(); i++) {
if(v[s[i]-'a']) {
ss += s[i];
v[s[i]-'a'] = 0;
}
}
return ss;
}
【问题讨论】:
-
这个问题听起来像家庭作业。
-
@HannoBinder 其实是个面试题。
-
为什么
abcd不能是字符串?
标签: c++ string algorithm lexicographic