Удалите все дубликаты из строки и выберите лексикографически наименьшую возможную строку. Например, строка 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;
}
abcd
не может быть строкой? - person Jonathan Van Dam   schedule 27.12.2015