比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
2 ABBAABBA A
2 1
知识点:1. strncmp()函数的用法,可以比较两个不同长度的前n个字符 与 strcmp()函数的用法差不多;
2.在字符数组中strcmp()的比较是以'\0'为结束的,所以在下面代码中字符串分割后,在母串要舍去的地方变为'\0' 即可
3. 使用do{}while(条件)可以不用在外面初始化条件,他会先执行一遍,再去判断
4.当字符数组是单个单个复制到另一个字符数组的时候,最后不要忘记加上结束符'\0',不然在用字符串处理函数的时候会出错
/*************************************************************************
> File Name: /chik.cpp
> Author: SSW
> Mail: [email protected]
> Created Time: Thu 31 Jul 2014 09:45:28 CST
************************************************************************/
#include
#include
#include
using namespace std;
/*
int main()
{
int n, m, K;
scanf("%d", &K);
while(K--){
scanf("%d %d", &n, &m);
if(2*n > m || m%2)
printf("No answer\n");
else
printf("%d %d\n",(4*n-m)/2 ,(m-2*n)/2);
}
return 0;
}
*/
/*
void fun(int n, char str[])
{
if(0 != n%2){
cout<= t; i--)
str2[n-1-i] = str[i];
if(0 == strncmp(str1, str2, t))
fun(t, str1);
else{
cout<>N;
while(N--){
cin>>str;
int lenght = strlen(str);
fun(lenght, str);
}
return 0;
}
*/
int main(){
int K, q, n;
char str[102], tt[102];
scanf("%d", &K);
getchar();
while(K--){
cin>>str; q = 0;
while(0 == q){
n = strlen(str);
if(n%2) break;
for(int i = 0; i < n/2; i++)
tt[i] = str[n-1-i];
tt[n/2] = '\0'; str[n/2] = '\0';
q = strcmp(tt, str);
}
printf("%d\n", n);
}
return 0;
}