最长回文子串
来源:互联网 发布:mac os 创建文件夹 编辑:程序博客网 时间:2024/06/11 16:43
- Description
输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。在判断时,应该忽略所有标点符号和空格,且忽略大小写,但输出应保持原样(在回文串的首部和尾部不要输出多余字符)。
- Input
输入字符串长度不超过5000,且占据单独的一行。
- Output
输出最长的回文串,如果有多个,输出起始位置最靠左的。
- Sample Input
Confuciuss say: Madam,I?m Adam.
- Sample Output
Madam, I?m Adam
#include<stdio.h>#include<string.h>int main(){ char a[5001],b[5001];int c[5001]={0}; int i,j=0,m,n,max=1,index1=0,index2=0,k=0,count=0; gets(a); for(i=0;a[i]!=0;i++) if(isalpha(a[i])){c[j]=i;b[j++]=toupper(a[i]);} b[j]=0; n=strlen(b); for(i=0;b[i]!=0;i++) { if(b[i]==b[i+1]) { for(j=i-1,k=i+2;j>=0&&k<n;j--,k++) if(b[j]!=b[k])break; if(2*(i-j)>max) {max=2*(i-j);index1=c[j+1];index2=c[k-1];}} for(j=i-1,k=i+1;j>=0&&k<n;j--,k++) if(b[j]!=b[k])break; if(2*(i-j)-1>max) {max=2*(i-j)-1;index1=c[j+1];index2=c[k-1];} } for(i=index1;i<=index2;i++) printf("%c",a[i]); puts(""); return 0;}
0 0
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 凸包初学(POJ1113)
- 银行储蓄系统
- 【bzoj1509】 NOI2003 逃学的小孩 树的直径
- Length of Last Word
- [LeetCode][Java] Combinations
- 最长回文子串
- Java对象赋值原理详解(下)附实例源码
- tomcat7和jetty启动的pom.xml配置
- 禁止浏览器中双击选中元素的解决方法
- webrtc ios 平台下载 代码编译
- 各种排序算法的比较
- c++课程设计——————银行系统
- 类和对象
- 3162 抄书问题