Java实现-删除数字

来源:互联网 发布:tcp监听端口检测失败 编辑:程序博客网 时间:2024/05/23 16:52

给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数。

找到删除 k 个数字之后的最小正整数。

N <= 240, k <= N

样例

给出一个字符串代表的正整数 A 和一个整数 k, 其中 A = 178542k = 4

返回一个字符串 "12"

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(k==0){int countZero=0;for(int i=0;i<A.length();i++){if(A.charAt(i)!='0')break;else{countZero++;}}return A.substring(countZero);}int []dp=countLow(A);int index=A.length()-1;for(int i=0;i<A.length()-1;i++){if(dp[i]>dp[i+1]){index=i;break;}}String front=A.substring(0, index);String tail=A.substring(index+1);return DeleteDigits(front+tail, k-1);    }    private static int[] countLow(String A){int []dp=new int[A.length()];int []standard=new int[10];for(int i=A.length()-1;i>=0;i--){ int temp=Integer.parseInt(A.charAt(i)+""); standard[temp]++; for(int j=0;j<temp;j++){ dp[i]+=standard[j]; }}return dp;}}