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个数字,条件是该数字比后一个数字大。 另外需要处理前边有0的情况,和完全没有i大于i+1的情况。
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());
}
}