#include<bits/stdc++.h>
using namespace std;
char s[2510];
int letter[30],y[2510];
int main()
{
int T,i,j,cnt,len,x,ansy,ysum,flag;
scanf("%d",&T);
while(T--)
{
scanf("%s",&s);
len=strlen(s);
memset(letter,0,sizeof(letter));
memset(y,0,sizeof(y));
x=0;
for(i=0;i<len;i++)
letter[s[i]-'a']++;
cnt=0;
for(i=0;i<len;i++)//查找第一个提前出线的字符
{
while(!letter[cnt])
cnt++;
if(s[i]-'a'==cnt)
letter[cnt]--;
else
{
x=i;
ysum=0;
for(j=i+1;j<len&&ysum<letter[cnt];j++)
{
if(s[j]-'a'==cnt)
y[ysum++]=j;
}
break;
}
}
ansy=y[0];
for(i=1;i<letter[cnt];i++)
{
flag=1;
for(j=1;j<ansy-x+1;j++)
{
if(s[ansy-j]>s[y[i]-j])//y[i]比ansy更优
{
ansy=y[i];
flag=0;
break;
}
else if(s[ansy-j]<s[y[i]-j])//若ansy比y[i]更优
{
flag=0;
break;
}
}
if(flag)//若之前的比较无法判断哪个最优
{
for(j=1;j<y[i]-ansy+1;j++)//继续向后比较
{
if(s[ansy+j]>s[y[i]-ansy+x-j])//若y[i]比ansy更优
{
ansy=y[i];
break;
}
else if(s[ansy+j]<s[y[i]-ansy+x-j])//若ansy比y[i]更优
break;
}
}
}
printf("%d %d\n",x,ansy);
}
}
51nod 1335 子序列翻转
最新推荐文章于 2020-06-04 21:44:14 发布