• Java实现 LeetCode 402 移掉K位数字


    402. 移掉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。

    class Solution {
        public String removeKdigits(String num, int k) {
            if (num == null || num.length() == 0) {
                return num;
            }
            int length = num.length();
            if (k <= 0 || k > length) {
                return num;// 非法
            }
            if (k == length) {
                return "0";
            }
    
            char[] chars = num.toCharArray();
    
            char[] newChars = new char[length]; // 移除k个数字的结果
            int newCharsTop = 0;
            for (int i = 0; i < length; i++) {
                while (k > 0 && newCharsTop > 0 && newChars[newCharsTop - 1] > chars[i]) {
                    newCharsTop--;
                    k--; // 移除一个数字
                }
                newChars[newCharsTop] = chars[i];
                newCharsTop++;
            }
            if (k > 0) { // 从后面移除k个数字
                newCharsTop = newCharsTop - k;
                k = 0;
            }
    
            // 起始位置不能是0
            int startIndex = 0;
            while (newChars[startIndex] == '0' && startIndex < newCharsTop) {
                startIndex++;
            }
            // 从起始位置返回  newCharsTop - startIndex
            if (newCharsTop - startIndex > 0) {
                return new String(newChars, startIndex, newCharsTop- startIndex);
            }
    
            return "0";
        }
    }
    
  • 相关阅读:
    元素类型
    PS
    盒模型
    文本样式
    WebStorm、IntelliJ IDEA、JetBrains、PhpStorm、RubyMine、PyCharm
    微信iOS WKWebview 网页开发适配指南
    js取url参数
    windows 80 端口占用
    前端Demo常用库文件链接
    MAC下利用Github 、hexo、 多说、百度统计 建立个人博客指南
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075741.html
Copyright © 2020-2023  润新知