大家好,又见面了,我是你们的朋友全栈君。
描述:输入一个字符串,求其中最长回文子串。子串的含义是:在字符串中连续出现得字符串片段。回文的含义是,
正着看和倒着看是相同的,如abba何abbebba。在判断时要求忽略所有的标点和空格,且忽略大小写。但输出时按原样输出
(首尾不要输出多余的字符串).输入字符串长度大于等于1小于等于5000.且单独占一行。
输入:
输入一行字符串。
输出:
输出所要求的回文子串。
样例输入:
Last Week,todo level odot,King
样例输出:
k,todo level odot,K
代码:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
char s[5000],s1[5000];int i,j,m=0,pri[5000],max=0,x,y,n;
gets(s);
n=strlen(s);
for (i=0;i<n;i++)
{
if(isalpha(s[i]))
{
pri[m]=i;
s1[m++]=toupper(s[i]);
}
}
for (i=0;i<m;i++)
{
for (j=0;j<=i&&i+j<m;j++)
{
if(s1[i-j]!=s1[i+j])break;//奇数
if((2*j+1)>max)
{
max=2*j+1;
x=pri[i-j];
y=pri[i+j];
}
}
for (j=0;j<=i&&i+j<m;j++)
{
if (s1[i-j]!=s1[i+j+1])break;//偶数
if ((2*j+2)>max)
{
max=2*j+2;
x=pri[i-j];
y=pri[i+j+1];
}
}
}
for (i=x;i<=y;i++)
printf("%c",s[i]);
return 0;
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134020.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...