本文共 792 字,大约阅读时间需要 2 分钟。
给定一个以字符串表示的非负整数 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。
class Solution {
public String removeKdigits(String num, int k) {
if(num == null || ("").equals(num) || ("").equals(num.trim()) || k==0 ){
return num;
}
if(num.length() <= k || num.length()>10002 ){
return "0";
}
StringBuffer sb = new StringBuffer(num);
while(k>0) {
int i=0;
while(sb.length()-1>i && sb.charAt(i)<=sb.charAt(i+1)) {
i++;
}
sb.delete(i, i+1);
k--;
}
while(sb.length()!=0 && sb.charAt(0) == '0')
sb.delete(0, 1);
if(sb.length()==0)
return "0";
return sb.toString();
}
}
转载地址:https://blog.csdn.net/luxuiary/article/details/105773502 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!