402. 移掉K位數字

給定一個以字符串表示的非負整數 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;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章