乍一看是字符串匹配,但是想想不过是对称问题,奇数肯定不能是镜面对称得到的,偶数部分不过是字符串的对称匹配。
(1)奇数用到continue,跳过偶数部分;
(2)复杂的地方是一个while循环,有许多需要注意的细节,break跳出while循环
(3)当length /=2 不满足while循环时也会跳出,所以偶数后面要有输出部分
(4)挨个比较,不满足时用flag,同时比较注意下标,这里很容易搞错。
(5)认真理一遍思路,是一道很容易的题目。
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string.h>
using namespace std;
int main ()
{
int m,length;
char a[110];
int flag;
scanf("%d",&m);
while(m--)
{
flag=0;
scanf("%s",&a);
length = strlen(a);
if(length%2){
printf("%d",length);
continue;
}
while(length%2==0&&length)
{
for(int i=0; i<=length/2-1; i++)
{
if(a[i]!=a[length-1-i])
{
flag = 1;
}
}
if(flag){
//printf("%d\n",length);
break;
}
else
length /= 2;
}
printf("%d\n",length);
}
return 0;
}