AcWing 1453. 移掉K位数字
原题链接
中等
作者:
飞呀
,
2021-05-07 00:51:40
,
所有人可见
,
阅读 245
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
const int N = 100010;
int visit[N];
int main(){
int k;
string s, ans = "0";
cin >> s;
cin >> k;
int len = s.size();
memset(visit, 0, sizeof(visit));
int count = 0;
for(auto c : s){
while(count < k && c < ans.back()){ //删除c前面所有比c大的
ans.pop_back(); //去除尾部字符
count++;
}
ans += c; //加入当前字符
}
while(count < k){ //所有字符都已符合条件但删除的数量不够时,直接删除尾部字符
ans.pop_back();
count++;
}
//前面可能不止一个0
int index = 0;
while(index < ans.size() - 1 && ans[index] == '0') index++;
cout << ans.substr(index) << endl;
return 0;
}