class Solution {
public String removeKdigits(String num, int k) {
StringBuilder sb = new StringBuilder(num);
// 直接返回如果可删除位数等于k
if(num.length() == k)
return "0";
for(int i = 0; i < sb.length();){
// 已经删除k位
if(num.length() == sb.length() + k)
break;
// 删除当前最后一位
if(i + 1 >= sb.length()){
sb.deleteCharAt(i);
if(i >= 1)
i--;
// 删除比后一位大的这一位
}else if(sb.charAt(i) > sb.charAt(i + 1)){
sb.deleteCharAt(i);
if(i >= 1)
i--;
// 不符合进入下一轮
}else{
i++;
}
}
// 移除多余的零
while(sb.length() > 0 && sb.charAt(0) == '0')
sb.deleteCharAt(0);
// 如果全部位“”则直接返回0
return sb.length() == 0 ? "0" : sb.toString();
}
}
贪心 - 移掉 K 位数字
最新推荐文章于 2024-07-24 22:51:50 发布