转载: http://www.tuicool.com/articles/jUZVbm6 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; }
转载-leetcode-字符串的最长回文-动态规划
猜你喜欢
转载自arual.iteye.com/blog/2341540
今日推荐
周排行