回文串(三种方法)

 

暴力 o(n3)

中心拓展法o(n2)

动态规划o(n2)

动态规划思路

根据一名分析回文串如果两边字符相同,那么必须中间是回文子串,整体才会回文

 且二维遍历,ij确定,子串也就确定,但由于需要先计算出i+1,j-1,所以我们的遍历顺序需要从下往上,既i从大到小,j从小到大,j最小从i开始取

class Solution {
    public String longestPalindrome(String s) {
        int len = s.length();
        int ans = 0;
        int j = 0,i=0;
        boolean[][] st = new boolean[1050][1050];
        int start = 0,end = 0;
          for( i=len-1;i>=0;i--)  {  
             for( j=i;j<len;j++) {
              if(s.charAt(i) == s.charAt(j)){
                    if((j-i)<=1){
                        st[i][j] = true;
                    }
                    else if(st[i+1][j-1]){
                        st[i][j] = true;
                    }
                }
               if(st[i][j]&&(ans<(j-i+1))){
                ans = j-i+1;
                end = j;
                start = i;
            } 
            }
            
           
        }
        return s.substring(start,end+1);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值