题解 | #明明的随机数#

最长回文子串

http://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

  • 思路写在注释里

alt

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println(getPalindromeString(new BufferedReader(new InputStreamReader(System.in)).readLine()));
    }

    /**
     * 获取最长回文子串长度
     * @param str
     * @return 最长回文子串长度
     */
    public static int getPalindromeString(String str) {
        char[] chararr = str.toCharArray();
        int len = chararr.length;
        if (chararr.length < 2) return chararr.length;
        int maxLen = 0;
        boolean[][] dp = new boolean[chararr.length][chararr.length];
        /**
         * 从后向前遍历
         */
        for (int i = chararr.length - 1; i >= 0; i--) {
            /**
             * 从当前遍历到的位置向后遍历
             */
            for (int j = i; j < chararr.length; j++) {
                /**
                 * 若两个字母相等,有可能成为回文
                 */
                if (chararr[i] == chararr[j]) {
                    /**
                     * 若两者相等且之间有一个以内的字母,则一定为回文
                     */
                    if (j - i < 3) { 
                        dp[i][j] = true;
                    }
                    /**
                     * 若二者相等,但中间差了2个以上的字母,则有可能是回文
                     * 具体看前者当前位置的后一个及后者当前位置的前一个是否为回文,即dp[i + 1][j - 1]
                     * 如:abcva i=0 j=4
                     *    a和a相等,要看bcv是否是回文,而bcv已经计算过了,位置在dp[1][3]
                     */
                    else {
                        dp[i][j] = dp[i + 1][j - 1];
                    }
                    /**
                     * 若是回文,则更新最长子串
                     */
                    if (dp[i][j]) {
                        if (j - i + 1 > maxLen) {
                            maxLen = j - i + 1;
                        }
                    }
                }
            }
        }

        return maxLen;
    }
}

全部评论

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务