最长回文串
来源:互联网 发布:编程原本 pdf 下载 编辑:程序博客网 时间:2024/06/05 07:13
输入一个字符串,求出其中的最长回文字串,样例输入;
Confucicss say:Madam,I‘m Asam。
样例输出:Masam,I'm Asam。
这个题首先要判断最长那个回文串的位置,并且与大小写无关,用到函数(toupper);然后输出后面的字符串。
#include <iostream> #include <string.h>#include <ctype.h>#include <algorithm>using namespace std;#define MAX 5000+10char hk[MAX], ls[MAX];int l[MAX];int main(){ int a,b=0,max=0; int j,i,k,X,Y; fgets(hk,sizeof(ls),stdin);//字符转到控制台 for(a=0;a<strlen(hk);a++) if(isalpha(hk[a]))//判断第一个字符是不是字母 { l[b]=a; ls[b++]=toupper(hk[a]);//转到大写字母 } for(i=0;i<b;i++) //先判断前面一部分 for(j=0;i-j>=0&&i+j<b;j++) { if(ls[i-j]!=ls[i+j]) break; //if(ls[k]!=ls[i+j-k]) if(j*2+1>max) { max=j*2+1; X=l[i-j]; Y=l[i+j]; } } for(j=0;i-j>=0&&i-j+1<b;j++)//判断整个字符串 { if(ls[i-j]!=ls[i-j+1]) break; //if(ls[k]!=ls[i+j-k]) if(j*2+2>max) { max=j*2+2; X=l[i-j]; Y=l[i+j+1]; } } for(i=X;i<=Y;i++) { cout<<hk[i]; } cout<<endl; return 0;}
开始没用toupper函数,用+-32。好像string也可以。
0 0
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文串模版
- 最长回文子串
- 最长回文子串
- HDU 1213 How Many Tables
- 《React-Native系列》5、RN实现弹出选择界面与动画效果
- 杭电 Problem 2008 分拆素数和 【打表】
- java中类名.class, class.forName(), getClass()区别
- 《剑指offer》第39题:平衡二叉树
- 最长回文串
- POJ 1724 ROADS
- 一个makefile使用实例
- hdoj 2098 分拆素数和 【素数打表】
- Java烧脑驴游(十四)--流(Stream)、文件(File)和IO
- 无线网覆盖
- 一个bat使用实例
- uboot 移植
- shell脚本 - 检测mysql是否可用