思路:我们只需从左向右扫描k次,每一次都扫描到递增序列的峰值,再把它删除,最后留下的便是最小值;
string removeKdigits(string num, int k)
{
int len = num.size();
if (len == k)
return "0";
for (int i = 0; i < k; i++)
{
//要删除的元素下标del
int del = 0;
//从左向右找递增序列的峰值
for (int j = 1; j < len && num[j] > num[j - 1]; j++)
del = j;
num.erase(num.begin() + del);
len--;
//删除完后再判断是否存在前导零
int l = 0;
while (l < len && num[l] == '0')
l++;
num = &num[l];
len -= l;
}
return num;
}