题目描述
给定一一个字符串,请你将其分成三段,并将每一段倒序后按照分段的顺序输出。 由于方案有多种,请输出答案字典序最小的那一种。
输入格式
输入一行为一个字符串,表示待分段的串。
输出格式
输出一行为一个字符串,表示答案串,需要保证字典序最小。
输入输出样例
输入 1 dcbagfekjib 输出 1 abedefghijk
输入 2 anaconda 输出 2 aanadnoc
#include <string>
#include <string.h>
#include <iostream>
using namespace std;
int main(){
int i=0;
string a;
while(cin>>a)
{
getchar();
if(cin.get()=='\n')
break;
}
int n=a.length();
char min[3];
min[0]=a[0];
int flag[3]={0},m=0,h=0;
for(int i=0;i<n-1;i++){
if(min[0]>a[i]){
min[0]=a[i];
flag[0]=i;
m=i+1;
}
}
min[1]=a[m];
for(int i=m+1;i<n-1;i++){
if(min[1]>a[i]){
min[1]=a[i];
flag[1]=i;
h=i+1;
}
}
min[2]=a[h];
for(int i=h+1;i<=n;i++){
if(min[2]>a[i]){
min[2]=a[i];
flag[2]=i-1;
}
}
for(int i=flag[0];i>=0;i--){
cout<<a[i];
}
for(int i=flag[1];i>flag[0];i--){
cout<<a[i];
}
for(int i=flag[2];i>flag[1];i--){
cout<<a[i];
}
return 0;
}
先寻找最小的字典序字符,将其之前的字符串包括本身划为第一个字符串,从原始字符串中分离。以此类推,分出第二个字符串,第三个字符串。如果存在多个最小字典序字符,则选择第一个最小字典序字符。
可以通过样例1,但不能通过样例2
希望得到正确代码