力扣3170.删除星号以后字典序最小的字符串
-
开26个栈记录每个字母出现的下标
- 删除时删最后一个下标
- 最后处理所有剩余下标
- 组合成答案
-
class Solution { public: string clearStars(string s) { vector<int> st[26]; for(int i=0;i<s.size();i++) { if(s[i] != '*') { st[s[i] - 'a'].push_back(i); continue; } for(auto &p:st) { if(!p.empty()) { p.pop_back(); break; } } } vector<int> idx; for(auto &p:st) idx.insert(idx.end(),p.begin(),p.end()); ranges::sort(idx); string t(idx.size(),0); for(int i=0;i<idx.size();i++) t[i] = s[idx[i]]; return t; } };