思路:以10为单位遍历,与标准比对,记录不同字符数,分情况讨论:
flag=0:在单词内任选两个相同字符进行交换即可。
flag=1:与所有其他字符尝试进行交换。
flag=2:交换不同的两个字符,令交换后与标准相同
flag> 3:不存在答案
#include<stdio.h>
#include<string.h>
int main()
{
int T,i,l,j,o,flag,TF,w1,w2,L;
char S[10]="fattyhappy",s[1101],S1,S2;
scanf("%d",&T);
getchar();
for(i=0;i<T;i++)
{
memset(s,'\0',sizeof(s));
scanf("%s",s);
l=strlen(s);
for(j=0;j<l;j++)
{
flag=0;
TF=0;
for(o=0;o<10;o++)
{
if(s[j+o]!=S[o]&&flag==0)
{
S1=S[o];
w1=j+o;
flag++;
}
else if(s[j+o]!=S[o]&&flag==1)
{
S2=S[o];
w2=j+o;
flag++;
}
else if(s[j+o]!=S[o]&&flag>1) flag++;
}
if(flag==0)
{
printf("%d %d\n",j+4,j+3);
TF=1;
break;
}
else if(flag==2)
{
if(s[w1]==S2&&s[w2]==S1)
{
printf("%d %d\n",w1+1,w2+1);
TF=1;
break;
}
}
else if(flag==1)
{
for(L=0;L<l;L++)
{
if(L==j)
{
L=L+9;
continue;
}
if(s[L]==S1)
{
printf("%d %d\n",L+1,w1+1);
TF=1;
break;
}
}
if(TF==1) break;
}
else continue;
}
if(TF==0) printf("-1\n");
}
}