题解 | #移掉 K 位数字#

移掉 K 位数字

https://www.nowcoder.com/practice/0fe685c8272d40f1b9785fedd2499c1c

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num string字符串 
     * @param k int整型 
     * @return string字符串
     */
    //贪心算法:维持一个从底到顶不降序的栈(用队列更方便)
    string removeKnums(string num, int k) {
        // write code here
        int n=num.size();
        stack<char> s;
        for(int i=0;i<n;i++){
            char temp=num[i];
            while(!s.empty()&&k>0&&temp<s.top()){
                s.pop();
                k--;
            }
            s.push(temp);         
        }
        for(int i=0;i<k;i++){
            s.pop();
        }
        string res;
        while(!s.empty()){
            res+=s.top();
            s.pop();
        }
        reverse(res.begin(), res.end());
        bool flag=true;
        string ans;
        for(int i=0;i<res.size();i++){
            if(flag==true&&res[i]=='0'){
                continue;
            }
            ans+=res[i];
            flag=false;
        }
        return ans.size()?ans:"0";
    }
};


全部评论

相关推荐

点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务