笔试面试题(8)---回文子串
来源:互联网 发布:淘宝助理下架在哪里 编辑:程序博客网 时间:2024/06/05 03:23
1、验证整个字符串是不是回文(最简单的了)
直接验证或递归验证都可以....
2、求连续的回文子串,如:abdadbx,则回文子串就是bdadb
整个有一个最优的算法为:“中心法求最长回文子串”(线性复杂度),具体的博客:http://www.cnblogs.com/wuyiqi/archive/2012/06/25/2561063.html写的真好!
#include<cstdio>#include<cstring>const int M = 110010*2;char str[M];//start from index 1int p[M];char s[M];int n;void checkmax(int &ans,int b){ if(b>ans) ans=b;}inline int min(int a,int b){ return a<b?a:b;}void kp(){ int i; int mx = 0; int id; for(i=1; i<n; i++){ if( mx > i ) p[i] = min( p[2*id-i], p[id]+id-i ); else p[i] = 1; for(; str[i+p[i]] == str[i-p[i]]; p[i]++) ; if( p[i] + i > mx ) { mx = p[i] + i; id = i; } }}void pre(){ int i,j,k; n = strlen(s); str[0] = '$'; str[1] = '#'; for(i=0;i<n;i++) { str[i*2 + 2] = s[i]; str[i*2 + 3] = '#'; } n = n*2 + 2; str[n] = 0;}void pt(){ int i; int ans = 0; for(i=0;i<n;i++) checkmax(ans, p[i]); printf("%d\n", ans-1);}int main(){ int T,_=0; while( scanf("%s", s) !=EOF ) { pre(); kp(); pt(); } return 0;}
如果用动态规划的用O(n^2)吧
#include <iostream>#include <cmath>using namespace std;#define MAXLEN 1000int maxlen[MAXLEN][MAXLEN];int LongestLen(char str[], int slen){ int i, j, len; for (i = 0; i < slen; i++) { maxlen[i][i] = 1; } for (len = 1; len < slen; len++) { for (i = 0; i <= slen - len; i++) { j = i + len; if (str[i] == str[j]) { if (i + 1 > j - 1) { maxlen[i][j] = 2; } else { maxlen[i][j] = 2 + maxlen[i + 1][j - 1]; } } else { maxlen[i][j] = maxlen[i + 1][j]> maxlen[i][j - 1]? maxlen[i + 1][j]:maxlen[i][j - 1]; } } } return maxlen[0][slen - 1];}int main(){ char str[1000]; cin>>str; int ans=LongestLen(str,strlen(str)); cout<<ans<<endl; return 0;}
3、如果要可以不连续的回文子串,只能用DP了,中心扩展法是求不了的。
0 0
- 笔试面试题(8)---回文子串
- 【面试题】最长回文子串
- 面试题 最长回文子串
- 面试题整理-线性时间求最长回文子串
- 【面试题之算法部分】最长回文子串
- 程序员面试题精选(37):判断字符串是否是回文字符串或者是否含有回文字符子串
- 程序员笔试题---【最大回文子串】
- 多益笔试:最长回文子串
- 面试题5:求字符串中回文子串的最大长度
- 面试题一(删除子串)
- Flex笔试(面试题)
- [经典面试题]回文串专题
- 面试题:回文数
- 面试题,删除子串
- (4.4.8)Android常见笔试面试题
- Java面试题集(笔试 )
- C#面试题笔试题(三)
- c/c++笔试面试题(1)
- POI操作Excel
- Nyoj 214 单调递增子序列(二)
- 京沪高速空间的黄金矿工和大家开会估计卡的话就客观环境啊打开
- libxml的使用(4)--xpath搜索节点树
- STM32 待机唤醒
- 笔试面试题(8)---回文子串
- TCP速率与窗口,带宽,RTT之间的关系
- Bitmap-BITMAPINFOHEADER结构
- 就是根据客户的关键哈都看过卡德加开了个甲氨蝶呤可根据拉倒
- 99. 打印字符串
- myeclipse10以下版本配置servlet注解方式
- 手机自动化测试
- 每天出门都很伤心
- java操作excel (jxl)