/** *给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小 */
class Solution {
public String removeKdigits(String num, int k) {String resullt ="";
List<Integer> list =new ArrayList<Integer>();
for (int i = 0 ;i<num.length();i++){
int number =Integer.parseInt(String.valueOf(num.charAt(i)));
while (list.size()!=0 && k>0 && (list.get(list.size()-1)>number)){
list.remove(list.size()-1);
k--;
}
if (number!=0||list.size()!=0)
{
list.add(number);
}
}
while (list.size()!=0 &&k>0)
{
list.remove(list.size()-1);
k--;
}
for (int i =0 ;i<list.size();i++)
{
if (list.get(i)==0&&resullt.length()==0)
{
}
else
{resullt=resullt+list.get(i);}
}
if (resullt.equals(""))
resullt=String.valueOf(0);
return resullt;
}
}
本文介绍了一种算法,该算法通过移除指定数量的数字来生成一个尽可能小的数值。具体实现采用栈思想,遍历每个数字并判断是否移除栈顶元素,最终返回处理后的结果。
2662

被折叠的 条评论
为什么被折叠?



