zoukankan      html  css  js  c++  java
  • 2020-12-20 去除重复字母

    题目

    题解

    使用了贪心和栈的思想,对实现思路没有理得太清,LeeteCode官方题解

    class Solution {
    public:
        string removeDuplicateLetters(string s) {
            vector<int> vis(26), num(26);
            for (char ch : s) {
                num[ch - 'a']++;
            }
    
            string stk;
            for (char ch : s) {
                if (!vis[ch - 'a']) {
                    while (!stk.empty() && stk.back() > ch) {
                        if (num[stk.back() - 'a'] > 0) {
                            vis[stk.back() - 'a'] = 0;
                            stk.pop_back();
                        } else {
                            break;
                        }
                    }
                    vis[ch - 'a'] = 1;
                    stk.push_back(ch);
                }
                num[ch - 'a'] -= 1;
            }
            return stk;
        }
    };
    
    CS专业在读,热爱编程。
    专业之外,喜欢阅读,尤爱哲学、金庸、马尔克斯。
  • 相关阅读:
    border-radius
    border-style
    border-width
    border
    max-width
    min-width
    clip 语法
    left
    z-index
    position
  • 原文地址:https://www.cnblogs.com/jmhwsrr/p/14165050.html
Copyright © 2011-2022 走看看