Leetcode 316 去除重複字母
阿新 • • 發佈:2020-12-21
Leetcode 316 去除重複字母
- 儘可能確保字串重的字元單調遞增。
- 確保字串沒有重複字元
使用棧結構:
不完全是單調棧。
class Solution {
public:
string removeDuplicateLetters(string s) {
vector<int> visited(26), nums(26);
for(char ss : s){
nums[ss - 'a']++;
}
string res;
for (char ss : s){
if(visited[ss - 'a'] == 0){
while(!res.empty() && res.back()>ss){
if(nums[res.back()-'a'] > 0){
visited[res.back() - 'a'] = 0;
res.pop_back();
}else{
break ;
}
}
visited[ss-'a'] =1;
res.push_back(ss);
}
nums[ss - 'a'] -= 1;
}
return res;
}
};