• 移出k个数


     * 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。
     * 
    输入: num = "1432219", k = 3
    输出: "1219"
    解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。
     */
    思路:
    /**
     * 从左到右遍历每一位,放入stack
     * 弹出stack与当前比较,弹出较大替换,弹出较小插入,直到替换了k个为止
     * 对于0开头不断截取直到第一位不是0
     */
    if(k==num.length()){
                return "0";
            }
            Stack<Character> s=new Stack();;
            int r=k;
            s.push(num.charAt(0));
            String str="";
            
            for(int i=1;i<num.length();i++){
                while(!s.isEmpty()&&r>0&&s.peek()>num.charAt(i)){
                    s.pop();
                    r--;
                }
                s.push(num.charAt(i));
            }
            
            char []c=new char[s.size()];
            for(int i=s.size()-1;i>=0;i--){
               c[i]=s.pop();
            }
    
                    
            for(int i=0;i<num.length()-k;i++){
                str=str+c[i];
            }
            while(str.length()>1&&str.charAt(0)=='0')
                str=str.substring(1, str.length());
            return str;
    

      

     
  • 相关阅读:
    放苹果
    滑雪-递归
    模数之和
    n个数的最小公倍数
    webapi跨域实现(CROS、JSONP)
    HttpRequestMessage扩展方法
    webapi基于单请求封装多请求的设计【转】
    webapi中获取HttpContext
    webapi序列化控制
    webapi简介及参数绑定
  • 原文地址:https://www.cnblogs.com/jieyi/p/14050325.html
Copyright © 2020-2023  润新知