码迷,mamicode.com
首页 > 其他好文 > 详细

[lintcode medium] Delete digits

时间:2015-12-18 06:56:35      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

Delete Digits

Given string A representative a positive integer which has N digits, remove any k digits of the number, the remaining digits are arranged according to the original order to become a new positive integer.

Find the smallest integer after remove k digits.

N <= 240 and k <= N,

Example

Given an integer A = "178542", k = 4

return a string "12"

 

思路很直接,删掉K个数,需要注意的是,要按从前到后的顺序删,从前往后遍历,如果前面一个数比后面的数大,则删掉。删掉K个数。则留下的是最小的数。

由于string是不能直接操作,需要使用StringBuilder 来存储变化的string

还需要注意两点:

1、最后一个数的处理

2、如果删掉的数留下的前面是0,返回时需要从第一个不是0的数返回子串。

public class Solution {
    /**
     *@param A: A positive integer which has N digits, A is a string.
     *@param k: Remove k digits.
     *@return: A string
     */
    public String DeleteDigits(String A, int k) {
        // write your code here

        if(A==null || A.length()==0 || k<0 || k>A.length()) return "";
        
        StringBuilder sb=new StringBuilder(A);
        for(int i=0;i<k;i++)
        {
            for(int j=0;j<sb.length();j++)
            {
                if(j==sb.length()-1||sb.charAt(j)>sb.charAt(j+1))
                {
                    sb.deleteCharAt(j);
                    break;
                }
            }
        }

        int i=0;
        for(;i<sb.length();i++)
        {
            if(sb.charAt(i)!=‘0‘)
            break;
        }
        
        return sb.substring(i,sb.length());
        
    }
}

 

[lintcode medium] Delete digits

标签:

原文地址:http://www.cnblogs.com/kittyamin/p/5055950.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!