您的位置:首页 > 其它

HDU‘14’11‘校赛 关于回文串

2014-11-08 18:57 183 查看
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,l,k,ok;
char s[1010],s1[1010],s2[1010];
while(~scanf("%d",&n))
{
for(i=1;i<=n;i++)
{
ok=1;
scanf("%s",s);
l=strlen(s);
for(j=0;j<=l-1;j++)
if(s[j]!=s[l-1-j])ok=0;
if(ok==0)printf("Case #%d: Not Palindrome\n",i);
else if(l%2==0)
{
ok=2;

for(j=0;j<l/2;j++)
s1[j]=s[j];
s1[l/2]='\0';
k=0;
for(j=l/2;j<l;j++)
{
s2[k]=s[j];
k++;
}
s2[l/2]='\0';

for(j=0;j<l/2;j++)
if(s1[j]!=s1[l/2-1-j]||s2[j]!=s2[l/2-1-j])ok=1;
}
if(ok==1)printf("Case #%d: Single Palindrome\n",i);
else if(ok==2)printf("Case #%d: Double Palindrome\n",i);
}
}
return 0;
}

关于回文串

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 0 Accepted Submission(s): 0


[align=left]Problem Description[/align]

对于一个字符串如果从前往后读和从后往前读是一样的,那么我们就叫他回文串;
在此基础上,如果把一个回文串拿出前l/2部分和后l/2部分,分别组成的两个子串都是回文串,则这个回文串可称为双回文串。
请编程判断给定字符串的类型。

[align=left]Input[/align]

题目包含多组测试数据,第一行有一个整数t(1<=t<=15)代表case数量,每组case包含一段长度不超过1000的字符串。

[align=left]Output[/align]

每个case的输出格式形如"Case #K: M",K代表case数,从1开始,M表示字符串类型,如果给的字符串是双回文串,则输出"Double Palindrome",如果是回文串但不是双回文串则输出"Single Palindrome",如果不是回文串就输出"Not Palindrome";

[align=left]Sample Input[/align]

3
kid1dik
kikkik
dala

[align=left]Sample Output[/align]

Case #1: Single Palindrome
Case #2: Double Palindrome
Case #3: Not Palindrome
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐