用的是这篇文章的思路,并且发现且修正了这篇文章的hack:asss ass
正常应该输出3 2 3 4 ,这篇文章输出的是2 2 3
并修正了该处错误,那么为什么没修这个错误之前ac,修了之后反而wa了呢?
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int flagleft,flagright,sum;
string s1,s2;
int main(){
cin>>s1;
cin>>s2;
int len1=s1.size(),len2=s2.size();
flagleft=flagright=-1;
for(int i=0;i<len1;++i){
if(s1[i+sum]!=s2[i]) sum++,flagleft=flagright=i;
if(sum==2){
cout<<"0";return 0;
}
}
if(sum==1||sum==0){
if(sum==0) ++sum;
while(flagleft!=0&&s1[flagleft]==s1[flagleft-1]) flagleft--,sum++;
while(flagright!=len1&&s1[flagright]==s1[flagright+1]) flagright++,sum++;
cout<<sum<<endl;
for(int i=flagleft;i<=flagright;++i){
cout<<i+1<<" ";
}
return 0;
}
}