중복된 문자를 제거하고 사전식 순서로 나열하라.
Input: s = "bcabc"
Output: "abc"
Input: s = "cbacdcbc"
Output: "acdb"
class Solution {
public:
string removeDuplicateLetters(string s) {
unordered_map<char, int> chars;
vector<char> st_v;
for (char c : s) chars[c] += 1;
for (char a : s)
{
chars[a]--;
if (find(st_v.begin(), st_v.end(), a) != st_v.end())
continue;
while (!st_v.empty() && st_v.back() > a && chars[st_v.back()] > 0)
{
st_v.pop_back();
}
st_v.push_back(a);
}
return string(st_v.begin(), st_v.end());
}
};
Runtime 4 ms / Memory 6.6 MB
https://leetcode.com/problems/remove-duplicate-letters/submissions/925088527/