zoukankan      html  css  js  c++  java
  • 删去k个数字后的最小值

    public static String removeKDigits(String num,int k) {
            //新整数的最终长度=原长度 - k
            int newLength=num.length()-k;
            //创建一个栈,用于接收所有数字
            char[] stack=new char[num.length()];
            //栈顶指针
            int top=0;
            for (int i = 0; i < stack.length; i++) {
                char c=num.charAt(i);
                while(top > 0 && stack[top-1] > c && k > 0) {
                    top--;
                    k--;
                }
                stack[top++]=c;
            }
            //找到栈中第一个非0整数的位置,以此来构建整数字符串
            int offset=0;
            while(offset < newLength && stack[offset] == '0') {
                offset++;
            }
            return offset==newLength ? "0" : new String(stack,offset,newLength - offset);
        }
        
        public static void main(String[] args) {
            System.out.println(removeKDigits("1593212", 1));
            System.out.println(removeKDigits("1593212", 4));
        }
  • 相关阅读:
    SHELL[22]
    SHELL[15]
    SHELL[08]
    SHELL[12]
    SHELL[06]
    SHELL[24]
    SHELL[11]
    shell文件合并、去重
    SHELL[25]
    SHELL[14]
  • 原文地址:https://www.cnblogs.com/dongma/p/10012437.html
Copyright © 2011-2022 走看看