316.去除重複字母
阿新 • • 發佈:2018-12-19
給定一個僅包含小寫字母的字串,去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小(要求不能打亂其他字元的相對位置)。
示例 1:
輸入: "bcabc" 輸出: "abc"
示例 2:
輸入: "cbacdcbc" 輸出: "acdb"
class Solution { public: string removeDuplicateLetters(string s) { int m[256] = {0}, visited[256] = {0}; string res = "0"; for (auto a : s) ++m[a]; for (auto a : s) { --m[a]; if (visited[a]) continue; while (a < res.back() && m[res.back()]) { visited[res.back()] = 0; res.pop_back(); } res += a; visited[a] = 1; } return res.substr(1); } };