本文主要是介绍力扣316.去除重复字母,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
力扣316.去除重复字母
-
从左到右遍历每个字母
- 若当前字母比栈顶字母小 并且右边仍然后栈顶字母出现
- 弹出栈顶字母 最后加入当前字母
-
class Solution {public:string removeDuplicateLetters(string s) {//记录每个字母出现次数;当前字符串中字母是否出现vector<int> left(26),in_ans(26);for(char c:s)left[c - 'a'] ++;string ans;for(char c:s){left[c - 'a'] --;if(in_ans[c - 'a']) continue;while(!ans.empty() && c < ans.back() && left[ans.back() - 'a']){in_ans[ans.back() - 'a'] = false;ans.pop_back();}ans += c;in_ans[c - 'a'] = true;}return ans;}};
这篇关于力扣316.去除重复字母的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!