zoukankan      html  css  js  c++  java
  • 402 Remove K Digits 移掉K位数字

    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。
    注意:
        num 的长度小于 10002 且 ≥ k。
        num 不会包含任何前导零。
    示例 1 :
    输入: num = "1432219", k = 3
    输出: "1219"
    解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。
    示例 2 :
    输入: num = "10200", k = 1
    输出: "200"
    解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。
    示例 3 :
    输入: num = "10", k = 2
    输出: "0"
    解释: 从原数字移除所有的数字,剩余为空就是0。
    C++:

    class Solution {
    public:
        string removeKdigits(string num, int k) {
            string res = "";
            int n = num.size(), keep = n - k;
            for (char c : num)
            {
                while (k && res.size() && res.back() > c) 
                {
                    res.pop_back();
                    --k;
                }
                res.push_back(c);
            }
            res.resize(keep);
            while (!res.empty() && res[0] == '0') 
            {
                res.erase(res.begin());
            }
            return res.empty() ? "0" : res;
        }
    };
    

     参考:https://www.cnblogs.com/grandyang/p/5883736.html

  • 相关阅读:
    测试中发现哪些bug
    兼容性测试
    接口测试基础
    Java基础概念
    Linux基础命令
    Selenium笔记
    常见软件测试类型分类
    性能测试类型
    网络基础题目
    常见测试方法
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8854971.html
Copyright © 2011-2022 走看看