zoukankan      html  css  js  c++  java
  • 【小米OJ-移除k位得到最小值】栈的应用

    import java.util.*;
    
    public class Main {
        public static void main(String args[]) {
            Scanner scan = new Scanner(System.in);
            String line;
            while (scan.hasNextLine()) {
                line = scan.nextLine().trim();
                // please write your code here
                String str[] = line.split(" ");
                int len = str[0].length();
                int k = Integer.parseInt(str[1]);
                int num[] = new int[len];
                for(int i=0;i<len;i++) num[i] = str[0].charAt(i)-'0';
                // System.out.println("answer");
                System.out.println(Main.removeKdigits(num,k));
            }
        }
    
        private static String removeKdigits(int []num,int k){
            if(num.length==0||k>=num.length) return "0";
            int i=0;
            int rmnum=0;
            LinkedList<Integer> stack = new LinkedList<>();
    
            for(;i<num.length;i++){
                while(!stack.isEmpty() && stack.peek()>num[i] && rmnum<k){///判断是否为递减数列,是就出栈,去掉高位
                    stack.pop();
                    rmnum++;
                }
                if(rmnum>=k) break;
                if(num[i]!=0) stack.push(num[i]);///去掉0位
            }
            while(rmnum<k) {///如果还没删除k位,继续出栈就行
                stack.pop();
                rmnum++;
            }
            String ans="";
            while(!stack.isEmpty()) ans = stack.pop() +ans;///连接字符串
            while(ans.length()==0&&i<num.length&&num[i]==0) i++;///如果出现0开头的字符串,则删除前面的0
            while(i<num.length) {
                ans+=num[i]+"";
                i++;
            }
            if(ans.length()==0) return "0";
            return ans;
        }
    }        
    

      

    不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。
  • 相关阅读:
    二分搜索
    Shell 字符串处理、获取文件名和后缀名
    sqlldr使用说明
    Linux cached过高问题
    算法时间复杂度
    #if,#ifdef,#ifndef的区别
    memcpy momove strcmp源码实现
    怎么解决/bin/sh: arm-linux-gcc: not found make
    性能文章
    linux
  • 原文地址:https://www.cnblogs.com/wszhu/p/12806799.html
Copyright © 2011-2022 走看看