首先,可能第一次接触字典序的人不知道字典序是什么,那我就现在这解释一下最小字典序是什么。
字典序就是的思想就和strcmp()函数一样,从第一个字符开始遍历比较,如果s1[i]>s2[i]那就是s2的字典序小,如果相同就比较下一位。
#include <bits/stdc++.h>
using namespace std;
// 删除字符
/*
思路是:每一次删除一个字符,都要从字符串开头遍历,
如果前面的字符大于后面的字符,则删除前面的字符,然后重新遍历字符串
直至删除n个字符,即为最小字典序
*/
int main(void)
{
int n;
string str;
getline(cin, str);
cin >> n;
for (string::iterator itr = str.begin(); itr != --str.end() && n > 0;)//--str.end()是指向最后一个字符的迭代器
{
if (*itr > *(itr + 1))
{
str.erase(itr);
itr = str.begin();//这一步还是很重要的
n--;
}
else
itr++;
}
cout << str;
// system("pause");
return 0;
}