题解 | #移掉 K 位数字#

移掉 K 位数字

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

class Solution {
public:
    string removeKnums(string num, int k) {
        int n = num.size();
        if(n <= k) return string("0");
        string v;
        for(char c:num){
            while(v.size() && v.back() > c && k){
                v.pop_back();
                --k;
            }
            v.push_back(c);
        }
        //删除前导0
        int i = 0;
        while(i < v.size() && v[i] == '0') ++i;
        string ret = v.substr(i);
        return ret;
    }
};

拿个字符串当栈用就行,从前往后构造升序列表。

全部评论

相关推荐

比亚迪 求帮选offer 12k*1.36*12 双非硕
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务