【面试题之算法部分】最长回文子串
2015-08-20 23:26
585 查看
暴力法:枚举中心位置
int LongestPalindrome(const char *s, int n) { if(s == NULL || n < 1) return -1; int i, j, k, max = 0; for(int i = 0; i < n; i++) { //回文子串为奇数的情况 for(int j = 0; (i - j >= 0) && (i + j < n); j++) if(s[i-j] != s[i+j]) break; j--; if(j * 2 + 1 > max) max = j * 2 + 1; //回文子串为偶数的情况 for(int k = 0; (i - k >= 0) && (i + k + 1 < n); k++) if(s[i-k] != s[i+k+1]) break; k--; if(k * 2 + 2 > max) max = k * 2 + 2; } return max; }
相关文章推荐
- 黑马程序员03数组排序与二分法查找
- 黑马程序员02JAVA基础语法
- 面试题,凑14,将数组中相加为14的数去除,并升序排列
- 黑马程序员01JAVA概述
- 黑马程序员——Java基础---数组与集合之间转换
- 一个平庸程序员的自白
- 黑马程序员——IO流
- 黑马程序员-JAVA基础之单例设计模式
- 黑马程序员----关于string类的基本操作举例
- 黑马程序员——java泛型
- 聚龙股份有限公司-面试总结
- 写给java程序员的一封情书
- 海量数据处理:十道面试题与十个海量数据处理方法总结
- 黑马程序员----java基础之Map集合
- 黑马程序员——集合
- UC-Android逆向工程师 面试题1的分析
- 黑马程序员——正则与反射
- 程序员的生活充满压力,但你不能放弃!
- 黑马程序员——String类和基本数据类型包装类
- 115个Java面试题和答案——终极列表(下)