这里实际采用了单调栈的思想,单调栈就是要在栈内保持其单调性(单调递增或单调递减)。我们需要移除遇到的“峰”或“谷”。这道题就是要删除每次遇到的“峰”。
关于单调栈的总结:单调栈与单调队列
public String removeKdigits(String num, int k) {
StringBuffer numBuffer = new StringBuffer(num);
while(k>0){
for(int i=0;i<numBuffer.length();i++){//删除遇到的第一个峰
if(i+1<numBuffer.length()&&numBuffer.charAt(i+1)<numBuffer.charAt(i)){
numBuffer.deleteCharAt(i);
break;
}else if(i==numBuffer.length()-1){
numBuffer.deleteCharAt(i);
break;
}
}
k--;
}
while(numBuffer.length()>0&&numBuffer.charAt(0)=='0'){//去年前导0
numBuffer.deleteCharAt(0);
}
String res = numBuffer.toString();
if(res.equals("")) return "0";
else return res;
}