题目描述
有一个字符串,如果它是回文串,那么把他截成两段,再判断是否是回文串,直到长度为2
输入输出格式
输入格式:
第一行输入一个字符串
输出格式:
输出是否是回文串
输入输出样例
输入样例#1: 输出样例#1:
abbaabba YES
输入样例#2: 输出样例#2:
aa YES
参考代码
#include<bits/stdc++.h>
using namespace std;
char a[1000010];
int ans = 0;
void fj(int r)
{
int mid = r / 2;//获取中间
if(r % 2 == 1)//如果是奇数
{
cout << "NO";
return;//跳出
}
else
{
for(int i = 0, j = r - 1; i < mid; i++, j--)//i在左边,j在右边
{
if(a[i] != a[j])//如果两边不相等
{
if(r==2)//判断是不是没了
{
cout << "YES";//如果没了输出YES
}
else
{
cout<<"NO";//否则输出NO
}
return;//返回
}
}
}
ans++;//递归层数增加
fj(mid);//从中间折半递归
}
int main()
{
gets(a);//输入字符串
char t;
int len = strlen(a);//获取长度
fj(len);//递归函数
}