給定一個以字符串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。
注意:
- num 的長度小於 10002 且 ≥ k。
- num 不會包含任何前導零。
示例 1 :
輸入: num = "1432219", k = 3 輸出: "1219" 解釋: 移除掉三個數字 4, 3, 和 2 形成一個新的最小的數字 1219。
示例 2 :
輸入: num = "10200", k = 1 輸出: "200" 解釋: 移掉首位的 1 剩下的數字爲 200. 注意輸出不能有任何前導零。
示例 3 :
輸入: num = "10", k = 2 輸出: "0" 解釋: 從原數字移除所有的數字,剩餘爲空就是0。
代碼:
public static String removeKdigits(String num, int k) {
//對nums進行循環,若i>i+i,則刪除i,且k--,最後刪除後k位
String S="";
for(int i=0;i<num.length();i++){
while(k>0&&S.length()>0&&S.charAt(S.length()-1)>num.charAt(i)){
S=S.substring(0,S.length()-1);
k--;
}
S+=Character.toString(num.charAt(i));
}
S=S.substring(0,S.length()-k);//截取前length-k
if(S.equals("")||S.equals("0"))
return "0";
while(!S.equals("0")&&S.charAt(0)=='0'){//去掉前面的0
S=S.substring(1,S.length());
}
return S;
}