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

来源:互联网 发布:海马玩mac安装失败 编辑:程序博客网 时间:2024/06/02 03:47
#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


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

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

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

Sample Input
3kid1dikkikkikdala

Sample Output
Case #1: Single PalindromeCase #2: Double PalindromeCase #3: Not Palindrome

0 0