题意
找一个串的最大字典序字串
题解
正序考虑会遇到无法确定这个数该不该选的情况,遇到的矛盾是无法确定后面有没有比它大的字母,所以我们只需要解决这个问题即可,做题时的基本思路就是正序不想试一试倒序能不能优化,我们可以记录住以i为结尾的最大字符然后第i-1个数与之比较,就可以确定当前字符是否能够输出。
#include<bits/stdc++.h>
using namespace std;
char s[100005], sum[100005];//sum[i]记录的是i后面的最大字符。
int main()
{
scanf("%s", s + 1);
int n = strlen(s + 1);
for (int i = strlen(s + 1); i >= 1; i--)
{
sum[i] = max(sum[i + 1], s[i]);
}
for (int i = 1; i <= n; i++)
{
if (s[i] == sum[i])putchar(s[i]);
}
}