题目考察的知识点是:

动态规划。

题目解答方法的文字分析:

先判断字符串是否为空,然后先设置一个开始值,最大值,最后根据这两个值去截取字符串。

本题解析所用的编程语言:

java语言。

完整且正确的编程代码:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return string字符串
     */
    public String longestPalindrome (String s) {
        // write code here
        if (s == null || s.length() == 0) {
            return "";
        }
        int n = s.length();
        int max = 0, start = 0;
        for (int i = 0; i < n; i++) {
            int len = Math.max(maxLen(s, i, i), maxLen(s, i, i + 1));
            if (len > max) {
                max = len;
                start = i - (len - 1) / 2;
            }
        }
        return s.substring(start, start + max);
    }

    private int maxLen(String s, int l, int r) {
        while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
            l--;
            r++;
        }
        return r - l - 1;
    }
}