基于C++ STL sort函数对c++ string 进行字符串的局部排序
Paypal笔试挂了,因为好久没有在leedcode之类的网上写代码,字符输入调了半天,时间都用光了。。。。
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。
代码如下:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
#include <fstream>
using namespace std;
int cmp0(char& a, char& b)
{
return a>b;
}
int cmp1(char& a, char& b)
{
return a<b;
}
void ReorderOneTime(int a, int s, int e, char* str)
{
if(a==0)
{
sort(str +s- 1, str+ e , cmp0);//不要用str+e-1,这里sort中的第二个入参表示的字符不参与排序。
}
else
{
sort(str + s - 1, str+ e , cmp1);
}
}
int main()
{
ifstream cin("C:\\Users\\FrankFang\\Desktop\\234.txt");
string str;
int m, n;
cin >> m;
cin >> n;
cin >> str;
while (n>0)
{
int a, s, e;
cin >> a; cin >> s; cin >> e;
ReorderOneTime( a, s, e, &str[0]);
n--;
}
cout << str;
}