回文分裂:一道比较类似模拟的题初思路是想着一直判断,用一个while,再记录一下可是好像不知道怎么写

回文分裂:一道比较类似模拟的题
初思路是想着一直判断,用一个while,再记录一下

img


可是好像不知道怎么写?好像超时了?
希望哪位人员给一下AC代码,或者更简洁的逻辑

img

就是递归函数吧
代码写上了:

bool hw(char *p,int n)
{
    for(int i=0;i<n/2;i++)
    {
        if(p[i] != p[n-i-1])
            return false;
    }
    return true;
}

int fl(char *p,int n)
{
    if(hw(p,n))
    {
        return fl(p,n/2);
    }
    return n;
}

int main()
{
    char a[10001];
    cin>>a;
    int n = fl(a,strlen(a));
    if(n==strlen(a))
        cout<<"0"<<endl;
    else
        cout<<strlen(a)/n<<endl;
    return 0;
}

while可以

可不可以给一下洛谷题号 我去洛谷里看看

#include<bits/stdc++.h>
using namespace std;
char a[150],b[150];
int lll;
int main(){
int cnt=1;
scanf("%s",a);
lll=strlen(a);
while(lll!=1){
char b[150];
int i,j=0;
for(i=lll-1;i>=0;i--) b[j++]=a[i];
b[j]='\0';
if(strcmp(a,b)!=0) break;
lll/=2;
cnt*=2;
}
/int lll=strlen(a),i,j=0;
for(i=lll-1;i>=0;i--){
b[j++]=a[i];
//printf("%c")
}
cout<<lll;
b[j]='\0';
if(strcmp(a,b)==0){
printf("yes");
}
else printf("no");
/
cout<<cnt;
return 0;
}
家人们咱就是说错了三个样例谁能帮我改一下呜呜呜呜呜呜呜