Palindromes
时间: 1ms 内存:64M
描述:
A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDEDCBA" is a palindrome because it is the same when the string is read from left to right as when the string is read from right to left.
Now give you a string S, you should count how many palindromes in any consecutive substring of S.
输入:
There are several test cases in the input. Each case contains a non-empty string which has no more than 5000 characters.
Proceed to the end of file.
输出:
A single line with the number of palindrome substrings for each case.
示例输入:
aba
aa
示例输出:
4
3
提示:
参考答案(内存最优[752]):
#include <stdio.h>
int main()
{
int i,j,k,g,n,h;
char a[5005];
while(scanf("%s",a)!=EOF)
{
k=strlen(a);
h=k;
for(i=1; i<k; i++)
{
for(n=0; n<k; n++)
{
g=n+i;
if (g>k)
break;
for(j=n; j<=(n+i); j++)
{
if (a[j]!=a[g])
break;
if (j==(n+i))
h++;
g--;
}
}
}
printf("%d\n",h);
}
return 0;
}
参考答案(时间最优[0]):
#include <stdio.h>
int main()
{
int i,j,k,g,n,h;
char a[5005];
while(scanf("%s",a)!=EOF)
{
k=strlen(a);
h=k;
for(i=1; i<k; i++)
{
for(n=0; n<k; n++)
{
g=n+i;
if (g>k)
break;
for(j=n; j<=(n+i); j++)
{
if (a[j]!=a[g])
break;
if (j==(n+i))
h++;
g--;
}
}
}
printf("%d\n",h);
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。