最长回文子字符串 还要更简单的方法
来源:互联网 发布:少年西游记手游源码 编辑:程序博客网 时间:2024/05/22 05:25
最长回文子串
时间限制:1000 ms | 内存限制:65535 KB
难度:4
- 描述
- 输入一个字符串,求出其中最长的回文子串。子串的含义是:在原串连续出现的字符串片段。回文的含义是:正着看和倒着看是相同的,如abba和abbebba。在判断是要求忽略所有的标点和空格,且忽略大小写,但输出时按原样输出(首尾不要输出多余的字符串)。输入字符串长度大于等于1小于等于5000,且单独占一行(如果有多组答案,输出第一组)。
- 输入
- 输入一个测试数据n(1<=n<=10);
随后有n行,每行有一个字符串。 - 输出
- 输出所要求的回文子串。
- 样例输入
1Confuciuss say:Madam,I'm Adam.
- 样例输出
Madam,I'm Adam
AC代码:
#include<iostream>using namespace std;#include<string.h>#include<stdio.h>#include<ctype.h>int main(){char a[5005],b[5005],e[5005];int n,l,k1,k2,max,b1,b2,i,j,c;cin>>n; getchar(); //吸收空格 while(n--){gets(a);l=strlen(a);for(i=0,j=0;i<l;i++)if(isalpha(a[i])) //判断是否为字母 { e[j]=i; //记录改变过后字符串中每个字符原来的位置 b[j++]=tolower(a[i]);//如果 b[j]是字母的话, 则将之变为小写字母,toupper(a[i])是将之变为大写 ,加上头文件#include<ctype.h> c=j; }//for(i=0;i<c;i++)cout<<b[i];//cout<<"pppppppp"<<endl; for(i=0,b1=0,b2=0,max=0;i<c;i++) //求字符串中最长的子字符串 for(j=i;j<c;j++) { if(b[j]==b[i]) { for(k1=i,k2=j;k1<(i+j)/2;k1++,k2--) if(b[k1]!=b[k2])break; if(b[k1]==b[k2]&&k1>=(i+j)/2) { if((j-i+1)>max) { max=j-i+1; b1=i; b2=j; } }}} //求最长的子字符串 for(i=e[b1];i<=e[b2];i++) //输出原来的字符串 cout<<a[i]; cout<<endl;}
return 0;}
0 0
- 最长回文子字符串 还要更简单的方法
- 最长回文子字符串
- 最长回文子字符串
- 最长回文子字符串
- 字符串的最长回文子序列以及最长子串
- 求字符串的最长回文子串
- 字符串的最长回文子串
- 求字符串的最长回文子串
- 字符串的最长回文子串问题
- 计算字符串的最长回文子序列
- 字符串的最长回文子串
- 字符串:最长回文子串
- 最长回文子字符串问题
- 【字符串】最长回文子串
- 求解最长回文字符串的方法
- 求一个字符串的最长回文子字符串
- POJ3974 求字符串的最长回文子串的长度
- 一个字符串的最长回文子串的长度
- 动态规划-矩阵连乘
- GDB详解
- Perl从文本文件中按关键字提取数据
- iOS7中UITextView contentsize改变时机
- 2014-03-04安装eclispe cdt
- 最长回文子字符串 还要更简单的方法
- 2014-03-04
- 皇冠3D成型與最流行使用的材料
- Q2.3
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
- 从hadoop框架与MapReduce模式中谈海量数据处理
- Q2.4
- ubuntu安装使用笔记04——jdk安装
- 简单列表的实现(基于链表)