AcWing 1453. 移掉K位数字
原题链接
中等
作者:
co
,
2020-09-11 17:26:43
,
所有人可见
,
阅读 538
#include <iostream>
using namespace std;
int main(){
int k;
string str;
cin>>str>>k;
int cur=1,len=str.size();
int lev=len-k;//删除k个后,结尾的下标
while(k&&cur!=len)
{
if(str[cur]<str[cur-1]) //逆序删除cur--1 ; k--
str.erase(cur-1,1),k--,cur=cur-1;//删除完cur-1;为了判断str[cur](未删除时的cur所指的元素)和前面序列是否也有序,cur要保持所指向的元素不变,删除完cur-1后,全部左移,当前cur所指元素为cur-1
else cur++;
}
if(k) str.erase(lev,k);//删除最后剩下的k个
if(str=="")cout<<0;
else
while(str[0]=='0')str.erase(0,1);
cout<<str;
return 0;
}