Description:
有一个字符串,现在对其进行多次局部排序,例如str=“abcdef”,输入a=0, s=1,e=3,表示对abc这个子字符串进行降序排列:cbadef。若a=1,表示按照升序排列,a=0表示降序;s,e表示起始和终止字符的位置。
输入例程:
10 3
naitdocexv
1 1 3
0 9 10
1 7 9
10 代表字符串的长度,3表示进行3次操作,下一行是字符串,之后是三种操作,顺序是a, s, e。
知识点:
- 注意sort函数输入的参数的范围。左闭右开
- 注意sort默认是升序,如果要用降序,头文件:
#include <functional
>,比较函数要用greater<类型>()
代码:
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
using namespace std;
int main()
{
string str;
string stra;
int len,n;
int a, s, e;
cin >> len >> n;
cin >> str;
while (n--)
{
cin >> a >> s >> e;
if (a == 1) //升序
{
sort(&str[s - 1], &str[e]);
}
else if (a == 0) // 降序
{
sort(&str[s - 1], &str[e],greater<char>());
}
}
cout << str << endl;
return 0;
}