方法1:贪心+栈进行求解
class Solution {public String removeKdigits(String num, int k) {if(num.length()==0||num==null||num.length()<=k){return "0";}int l = num.length()-k;Stack<Character> stack = new Stack<Character>();for(int i=0; i<num.length(); i++){while(!stack.isEmpty()&&stack.peek()>num.charAt(i)&&(stack.size()-i+k>0)){stack.pop();}stack.push(num.charAt(i));}while(stack.size()>l){stack.pop();}char[] res = new char[stack.size()];for(int i=res.length-1; i>=0; i--){res[i] = stack.pop();}String s = new String(res);while(s.startsWith("0")&&s.length()>1){s = s.substring(1);}return s;}
}
方法2:直接进行贪心求解
class Solution {public String removeKdigits(String num, int k) {if (num.length() == k) return "0";StringBuilder s = new StringBuilder(num);for (int i = 0; i < k; i++) {int idx = 0;for (int j = 1; j < s.length() && s.charAt(j) >= s.charAt(j - 1); j++) idx = j;s.delete(idx, idx + 1);while (s.length() > 1 && s.charAt(0) == '0') s.delete(0, 1);}return s.toString();}
}
引用:力扣网