码迷,mamicode.com
首页 > 其他好文 > 详细

力扣#5 最长回文子串

时间:2020-12-14 13:43:53      阅读:4      评论:0      收藏:0      [点我收藏+]

标签:ever   ++   equals   bsp   sub   ==   color   ret   判断   

 1 class Solution {
 2     public String longestPalindrome(String s) {
 3         if(s.equals("")) return "";
 4         String origin = s;
 5         String reverse = new StringBuffer(s).reverse().toString();
 6         int n = s.length();
 7         int[][] str = new int[n][n];
 8         int maxLen = 0;
 9         int maxEnd = 0;
10         for(int i = 0; i < n; i++){
11             for(int j = 0; j < n; j++){
12                 if(origin.charAt(i) == reverse.charAt(j)){
13                     if(i == 0 || j == 0){
14                         str[i][j] = 1;
15                     }
16                     else{
17                         str[i][j] = str[i - 1][j - 1] + 1;
18                     }
19                 }
20                 if(str[i][j] > maxLen){
21                     int beforeRev = n - 1 - j; //判断倒置前的下标是否相等 例如 s = abc435cba s‘ = abc534cba
22                     if (beforeRev + str[i][j] - 1 == i){ //如果相等 才是我们要找的回文串
23                         maxLen = str[i][j];
24                         maxEnd = i;
25                     }
26                 }
27             }
28         }
29         return s.substring(maxEnd - maxLen + 1, maxEnd + 1);
30     }
31 }

今天的日常有点难(一看就懂 一做就废) 大家自行去看看罢 我CV溜了

 

  a b a c d
d 0 0 0 0 1
c 0        
a 1        
b 0        
a 1        
  a b a c d
d 0 0 0 0 1
c 0 0      
a 1 0      
b 0 2      
a 1 0      
  a b a c d
d 0 0 0 0 1
c 0 0 0    
a 1 0 1    
b 0 2 0    
a 1 0 3    

 

 

 

 

 

 

 

第五题主要这样一列一列的将原字符和翻转之后的字符进行比较 第一列和第一行置为1

动态规划的转移公式是 dp[i - 1][j - 1] + 1= dp [ i ][ j ] 第一行和第一列除外

如果dp [ i ][ j ] > maxLen的话 则更新最大长度 并且记录起始位置maxEnd

最后 substring 啦 今天有点累 先溜溜球摸鱼了

 

 

 

力扣#5 最长回文子串

标签:ever   ++   equals   bsp   sub   ==   color   ret   判断   

原文地址:https://www.cnblogs.com/doomslayer/p/14105000.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!