Longest Palindromic Substring
2014-03-23 14:46
218 查看
题目原型:
Given a string S, find the longest palindromic
substring in S. You may assume that the maximum length of S is
1000, and there exists one unique longest palindromic substring.
基本思路:
动态规划,利用一个table表存放某个字符到另一个字符之间是否是回文。例如要判断i和j之间的字符串是否是回文,那么我们就要判断s[i]?=s[j]和i+1与j-1之间是字符串是否是回文。
Given a string S, find the longest palindromic
substring in S. You may assume that the maximum length of S is
1000, and there exists one unique longest palindromic substring.
基本思路:
动态规划,利用一个table表存放某个字符到另一个字符之间是否是回文。例如要判断i和j之间的字符串是否是回文,那么我们就要判断s[i]?=s[j]和i+1与j-1之间是字符串是否是回文。
public String longestPalindrome(String s) { if(s==null||s.length() ==0) return s; if(s.length()==1) return s; boolean[][] table = new boolean[s.length()][s.length()]; for(int i = 0;i<table.length;i++) { for(int j = 0;j<table.length;j++) table[i][j] = true; } String str = genTable(table, s); return str; } //产生table表 public String genTable(boolean[][] table,String s) { String str = ""; //根据间距从小到大来遍历 for(int dis = 1;dis<table.length;dis++) { boolean isGet = false; for(int i = 0,j = i+dis;j<table.length;i++,j++) { table[i][j] = (table[i+1][j-1]&&(s.charAt(i)==s.charAt(j))); if(table[i][j]) { if(isGet==false) { str = s.substring(i,j+1);//尽量少用次行,太耗时,由于这一层中间距是一样的,所以str只赋值一次就行了 isGet = true; } } } } return str; }
相关文章推荐
- 3D数学基础,图形与游戏开发笔记3
- SLComposeViewController [新浪微博] 使用示例
- 在eclipse中查看jdk源码
- Talairach空间、MNI空间、Native空间、Stereotaxic空间
- css inline-block与inline的理解
- Hadoop学习之MapReduce(四)
- 开始写
- perl cpanm
- 八个被现代科学证实的古老信条
- HDOJ -- 4699
- java基础_09_集合
- SQL列转行
- 我的IT成长路——为梦想扬帆起航
- 我的IT成长路——为梦想扬帆起航
- 类的序列化与网络通讯
- CF #div.1 B.good sequences
- 先说首先想到的,URL编码问题
- c操作lua栈 6
- FileWritter写入文件
- String对象及特点