第二種方法,AC,時間勉強過得去 runtime 16ms 有交流的同仁請留言!
#include<stdio.h>
#include<string.h>
char a[25];
char b[100];
char characterArr[40]="ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
char reverseArr[40]="A 3 HIL JM O 2TUVWXY51SE Z 8 ";
int Is_paLindrome(char *s)
{
int i;
int n = strlen(s);
for(i = 0; i <= n/2-1; i++)
{
if(s[i] != s[n-1-i])
{
return 0;
}
}
return 1;
}
int Is_mirrored(char *s)
{
int n = strlen(s);
int l,j,h,k;
int m = strlen(characterArr);
for(l = 0;l <= n-1; l++)
{
a[l] = s[l];
}
for(j = 0; j <= n-1; j++)
{
for(k = 0; k <= m-1; k++)
if(a[j] == characterArr[k])
{
a[j] = reverseArr[k];
break;
}
}
for(h = 0; h <= n/2; h++)
if(s[h] != a[n-1-h])
return 0;
return 1;
}
int main()
{
while(gets(b))
{
if(Is_paLindrome(b))
{
if(!Is_mirrored(b))
printf("%s -- is a regular palindrome.\n",b);
else
printf("%s -- is a mirrored palindrome.\n",b);
}
else
{
if(!Is_mirrored(b))
printf("%s -- is not a palindrome.\n",b);
else
printf("%s -- is a mirrored string.\n",b);
}
printf("\n");
memset(b,0,sizeof(b));
}
return 0;
}