【数组和字符串】3.3最长回文串
来源:互联网 发布:宇宙追缉令 知乎 编辑:程序博客网 时间:2024/05/17 09:08
样例:
Input:
Confuciuss say:Madom,I’m Adam.
Output:
Madam,I’m Adam.
#include<stdio.h>#include<string.h>#include<ctype.h>#define MAXN 5000+10char buf[MAXN],s[MAXN];int p[MAXN];//用P[i]来保存s[i]在buf中的位置 int main(){ int n,m=0,max=0,x,y; int i,j,k; fgets(buf,sizeof(s),stdin); //读取完整的一行储存在字符数组buf中; //该调用从标准输入流 stdin(也就是键盘输入) //读入 s 数组的大小(sizeof(s))再减 1 的长度的字符到 buf 所指的内存空间中 n=strlen(buf); for(i=0;i<n;i++) { if(isalpha(buf[i])) { p[m]=i;//用P[i]来保存s[i]在buf中的位置 s[m++]=toupper(buf[i]); } //isalpha 判断buf[i]是否为数组 toupper返回大写字母 头文件:ctype.h; //同时m保存字母数; } /* //枚举回文串的起点和终点并判断是否为回文串; for(i=0;i<m;i++) { for(j=i;j<m;j++) { //判断s是否为回文串 int ok=1; //引入变量 ok 参与判断 for(k=i;k<=j;k++) { if(s[k]!=s[i+j-k]) ok=0; } if(ok&&j-i+1>max) max=j-i+1; //利用“当前最大值”变量 max 来保存当前发现的最长回文串的长度; } } printf("max=%d\n",max); */ //上述代码可获得最长回文串长度; //由于字符可多达5000个,由生成一个5000个字符'a'的字符串可以发现程序效率会太低,运行速度过慢 //则我们可以枚举回文串的额中间位置'i'然后不断向外扩展,知道有字符不同; //长度为奇数和偶数的回文串的处理方式是不同的; for(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]; //在更新max的同时把p[i]和p[j]分别保存在x,y中,最后输出buf[x]和buf[y]中的所有字符; } } 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]; } } } for(i=x;i<=y;i++) { printf("%c",buf[i]); } printf("\n"); return 0; }
0 0
- 【数组和字符串】3.3最长回文串
- 字符串最长回文串
- 【后缀数组】 求字符串的最长回文串
- 字符串:最长回文子串
- 【字符串】最长回文子串
- 找工作知识储备(2)---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 找工作知识储备(2)---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 找工作知识储备---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- ] 找工作知识储备(2)---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 找工作知识储备(2)---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 字符串相关处理kmp,前缀数,后缀树,后缀数组,最长回文串,最长重复字串,最长非重复字串
- D
- 机器学习总结(十):常用聚类算法(Kmeans、密度聚类、层次聚类)及常见问题
- 解决Select下拉列表的高度
- 生产者消费者模式
- Android Studio杂七杂八的使用记录
- 【数组和字符串】3.3最长回文串
- 图的基本概念
- mac 下 lavarev数据库服务启动不了
- echarts 柱状图 如何添加点击事件
- Localization and Object Detection
- 房卡牛牛 丹东牛牛组件
- SDL 加载显示JPEG图片
- unity3d的local和global pivot 和Center
- C语言换行带来的问题