
题意
输入一个长度为n的字符串s,现在可以删除一个字符得到新的字符串s,输出字典序最大的那个。
思路
如果有s[i]>s[i+1],那么我们把 i 删除一定可以使得字典序变大。
如果没有,那么证明s是字典序非递减的,我们删除最后一个即可。
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int main()
{
cin >> n >> s;
int pos = n-1;
for (int i = 1; i < n; i++)
if (s[i] < s[i-1]) { pos = i-1; break; }
for (int i = 0; i < n; i++)
if (i != pos) cout << s[i];
return 0;
}
/*
3
aaa
*/
本文介绍了一种算法,用于从给定的字符串中通过删除一个字符来获得字典序最大的子串。该算法首先检查是否存在逆序对,若有,则删除逆序对中的前一个字符;若字符串为字典序非递减,则删除最后一个字符。
590

被折叠的 条评论
为什么被折叠?



