也是最后一个点过不了,但不是回文的问题,我试了几个还是找不到问题,用的双指针找到最短循环
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int m;
string s1,smap;
cin>>m>>s1;
s1=' '+s1;
int la = 1,idx = 1;
if(m==2){
cout<<"1";
return 0;
}
smap = s1.substr(0,2);
for(int i=2;i<=m;i++)
{
if(s1[i]!=smap[idx]&&s1[i]!=s1[1]) {
idx = 1;
la = i;
smap = s1.substr(0,i+1);
}
else if(s1[i]!=smap[idx]){
idx = 2;
la = i-1;
smap = s1.substr(0,i);
}
else{
if(idx == la) idx = 1 ;
else idx++;
}
}
int x = smap.size();
cout<<x-1;
return 0;
}