题解 | #移掉 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";
    }
};


全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
码农索隆:力扣的题目还挺贴近现实
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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