最长回文子串的长度 南邮NOJ 1968
来源:互联网 发布:数据仓apriori算法 编辑:程序博客网 时间:2024/05/20 21:44
最长回文子串的长度
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 322 测试通过 : 62
总提交 : 322 测试通过 : 62
题目描述
输入一个字符串,求出其中最大回文子串的长度。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。在判断时,应该忽略所有标点符号和空格,且忽略大小写,但输出应保持原样(在回文串的首部和尾部不要输出多余字符)。
输入
输入字符串长度不超过5000,且占据单独的一行。
输出
输出最长回文串的长度,该回文串不包括所有标点符号和空格。
样例输入
Confuciuss say: Madam,I'm Adam.
样例输出
11
提示
undefined
/*枚举回文串中的"中间"位置,然后不断向外扩展,直到有字符不同。*/#include<stdio.h>#include<string.h>#include<ctype.h>#define MAXN 5000+10char buf[MAXN],s[MAXN];int p[MAXN];int main(){ int n,m=0,max=0,x,y; int i,j; fgets(buf,sizeof(s),stdin); n=strlen(buf); for(i=0;i<n;i++) { if(isalpha(buf[i])) { p[m]=i; s[m++]=toupper(buf[i]); } } for(int i=0;i<m;i++) { for(j=0;i-j>=0&&i+j<m;j++) { if(s[i-j]!=s[i+j]) break; if(j*2+1>max) {max=j*2+1;x=p[i-j];y=p[i+j];} } for(j=0;i-j>=0&&i+j+1<m;j++) { if(s[i-j]!=s[i+j+1]) break; if(j*2+2>max) {max=j*2+2;x=p[i-j];y=p[i+j+1];} } } int cnt=0; //统计字母长度 for(i=x;i<=y;i++) { if(isalpha(buf[i])) cnt++; } printf("%d\n",cnt); return 0;}这一题和求最长回文字串很相似,只不过本题比后者多了统计最长回文子串中的字母数目这部分~
0 0
- 最长回文子串的长度 南邮NOJ 1968
- 最长回文子串 南邮NOJ 1100
- 南邮 OJ 1968 最长回文子串的长度
- 求解最长回文子串的长度
- 最长回文子串长度
- 最长回文子串长度
- 每天一道LeetCode-----最长回文子串/序列,从头开始的最长回文子串长度
- POJ3974 求字符串的最长回文子串的长度
- 一个字符串的最长回文子串的长度
- Manacher算法求最长回文子串的长度
- 求字符串中的最长回文子串的长度
- Manacher算法实现求最长回文子串的长度
- JAVA:返回字符串中最长回文子串的长度
- poj 3974 最长回文子串长度
- 010回文子串最长长度
- 算法:最长回文子串长度
- 求 最长不重复子串的长度 & 最长回文的长度
- 给定一个字符串,求它的最长回文子串的长度,并打印出最长回文子串
- hdu 2610 Sequence one ( dfs+可行性剪枝 )
- 动态规划-阿里笔试
- Spark集群资源调度
- 关于++i与i++以及静态成员变量与非静态成员变量新手疑惑的地方
- 汤米维斯提
- 最长回文子串的长度 南邮NOJ 1968
- 得到UIWebView内视频播放器弹出和关闭的通知
- Linux C++ 简单线程池
- SQLServer 服务器架构扩展之数据库扩展的一些步骤
- !Light oj 1066--BFS--(队列溢出)
- 使用通用适配器Base-adapter-helper
- 机器学习常用数据库
- P52 第30题 同构数问题
- apple watch