Java实现-删除数字

来源:互联网 发布:sql where or 编辑:程序博客网 时间:2024/06/05 03:08

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

返回一个字符串 "12"

[java] view plain copy
 print?
  1. public class Solution {  
  2.     /** 
  3.      *@param A: A positive integer which has N digits, A is a string. 
  4.      *@param k: Remove k digits. 
  5.      *@return: A string 
  6.      */  
  7.     public String DeleteDigits(String A, int k) {  
  8.         // write your code here  
  9.         if(k==0){  
  10.             int countZero=0;  
  11.             for(int i=0;i<A.length();i++){  
  12.                 if(A.charAt(i)!='0')  
  13.                     break;  
  14.                 else{  
  15.                     countZero++;  
  16.                 }  
  17.             }  
  18.             return A.substring(countZero);  
  19.         }  
  20.         int []dp=countLow(A);  
  21.         int index=A.length()-1;  
  22.         for(int i=0;i<A.length()-1;i++){  
  23.             if(dp[i]>dp[i+1]){  
  24.                 index=i;  
  25.                 break;  
  26.             }  
  27.         }  
  28.         String front=A.substring(0, index);  
  29.         String tail=A.substring(index+1);  
  30.         return DeleteDigits(front+tail, k-1);  
  31.   
  32.     }  
  33.     private static int[] countLow(String A){  
  34.         int []dp=new int[A.length()];  
  35.         int []standard=new int[10];  
  36.         for(int i=A.length()-1;i>=0;i--){  
  37.              int temp=Integer.parseInt(A.charAt(i)+"");  
  38.              standard[temp]++;  
  39.              for(int j=0;j<temp;j++){  
  40.                  dp[i]+=standard[j];  
  41.              }  
  42.         }  
  43.         return dp;  
  44.     }  
  45.   
  46. }  





作者 : Narasimha_Karumanchi
原创粉丝点击