首页 > 其他 > 详细

5. Longest Palindromic Substring最大回文子串

时间:2018-01-01 17:33:04      阅读:204      评论:0      收藏:0      [点我收藏+]
    int sta = 0;
    int max = 1;
    public String longestPalindrome(String s) {
        /*
        判断回文有两种:
            1.最大回文子序列求长度:
                用动态规划,dp[sta][end] 代表开头为sta、结尾为end的部分最大回文子序列的长度是多少
                dp[sta][end] = (s.charAt(sta)==s.charAt(end))?dp[sta+1][end-1]+2:max(dp[sta][end-1],dp[sta+1][end])
2.最大回文子串: 用两遍延伸法,分为两种情况,奇数子串和偶数子串: 把所有字符当做中轴,遍历一遍,每当长度超过,就更新结果
*/ int l = s.length(); if (l==0) return ""; for (int i = 0; i < l; i++) { //奇数情况 helper(s,i,i); //偶数情况 helper(s,i,i+1); } //这里注意是前闭后开区间,注意区间 return s.substring(sta,sta+max); } public void helper(String s,int left,int right){ //从中轴向两边延伸,注意最后的结果多了一次 while (left >= 0&& right < s.length()&& s.charAt(left)==s.charAt(right)) { left--; right++; } //由于left多减了一次,right多加了一次,所以处理要注意 if (max < right-left-1) { max = right-left-1; sta = left+1; } }

最大回文子序列在:http://www.cnblogs.com/stAr-1/p/7444994.html

5. Longest Palindromic Substring最大回文子串

原文:https://www.cnblogs.com/stAr-1/p/8167885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!