南邮 OJ 1100 最长回文子串
来源:互联网 发布:windows caffe mnist 编辑:程序博客网 时间:2024/05/16 12:42
最长回文子串
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 748 测试通过 : 242
总提交 : 748 测试通过 : 242
比赛描述
输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。在判断时,应该忽略所有标点符号和空格,且忽略大小写,但输出应保持原样(在回文串的首部和尾部不要输出多余字符)。
输入
输入字符串长度不超过5000,且占据单独的一行。
输出
输出最长的回文串,如果有多个,输出起始位置最靠左的。
样例输入
Confuciuss say: Madam,I?m Adam.
样例输出
Madam, I?m Adam
题目来源
刘汝佳《算法竞赛入门经典》
#include<iostream>#include<string>#define MAX_N 5010using namespace std;int main(){int i,j,b,e,n,m,max;int pos[MAX_N];string str1,str2;getline(cin,str1);n = (int)str1.length();str2.resize(n);for(i=0,m=0; i<n; ++i){if(str1[i]>='a' && str1[i]<='z'){pos[m]=i;str2[m++]=str1[i];}else if(str1[i]>='A' && str1[i]<='Z'){pos[m]=i;str2[m++]=str1[i]-'A'+'a';}}b = 0;e = 0;max = 1;for(i=1;i<m;i++){for(j=1; i-j>=0 && i+j<m && str2[i+j]==str2[i-j]; j++);j--;if(max<2*j+1){max=2*j+1;b=i-j;e=i+j;}for(j=1; i-j>=0 && i-1+j<m && str2[i-j]==str2[i-1+j]; j++);j--;if(max<2*j){max=2*j;b=i-j;e=i-1+j;}}str1=str1.substr(pos[b],pos[e]-pos[b]+1);cout<<str1<<endl;}
0 0
- 南邮 OJ 1100 最长回文子串
- 南邮 OJ 1968 最长回文子串的长度
- 最长回文子串 南邮NOJ 1100
- 依然是最长回文子串 9OJ-1528
- 九度OJ 1528 最长回文子串 -- Manacher算法
- LeetCode OJ 之 Longest Palindromic Substring (最长回文子串)
- 九度oj 1528 最长回文子串
- LeetCode OJ-5.Longest Palindromic Substring(最长回文子串)
- 广师oj 2238 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- IOS开发-指纹识别
- Java类型转换实例
- Attribute Unavailable: First baseline layout attribute on iOS versions prior to 8.0
- 文章标题
- C++的静态成员函数指针
- 南邮 OJ 1100 最长回文子串
- 触摸事件分发机制总结
- The hierarchy of the type MethodBeforeAdvice is inconsistent
- [网络流24题] 05 圆桌聚餐(最大流判满流)
- 【android自定义控件】android ListView添加侧滑删除
- iOS学习笔记8-iOS 实现发送邮件和短信
- Java中String、StringBuffer和StringBuilder详解
- php redis
- 橡皮擦(转)