删除一个整数中的k个数,得到的数最小。
思想:确保前一个数比后一个数小,否则就把前一个数字删了
#include <iostream>
using namespace std;
string a;
int k;
int main()
{
cin>>a>>k;
if(k >= a.size()) a.erase();//全部删除
else while(k > 0)
{
int i;
for(i=0;(i<a.size()-1) && (a[i] <= a[i+1]); ++i);//遍历数组从前到后,找到 a[i] > a[i+1]就跳出
a.erase(i,1);//删除从i开始的1个字符
k--;
}
while(a.size() > 1 && a[0] == '0') //删除开头的0
a.erase(0,1);//删除从0开始的1个字符
cout<<a<<endl;
return 0;
}