算法

2018-01-30 获取最大的回文字符串

2018-01-30  本文已影响15人  BlackChen
public String longestPalindrome(String s) {
    int length = s.length();
        int maxlength = 0;
        int start = 0;

        for (int i = 0; i < length; i++)//长度为奇数
        {
            int j = i - 1, k = i + 1;
            while (j >= 0 && k < length && s.charAt(j) == s.charAt(k)) {
                if (k - j + 1 > maxlength) {
                    maxlength = k - j + 1;
                    start = j;
                }
                j--;
                k++;
            }
        }

        for (int i = 0; i < length; i++)//长度为偶数
        {
            int j = i, k = i + 1;
            while (j >= 0 && k < length && s.charAt(j) == s.charAt(k)) {
                if (k - j + 1 > maxlength) {
                    maxlength = k - j + 1;
                    start = j;
                }
                j--;
                k++;
            }
        }
        if (maxlength > 0)
            return s.substring(start, start + maxlength);
        return s.substring(0,1);

解法:
暴力枚举,回文字符串分为奇数和偶数.
奇数:
"aba" ,把每个字符串中间作为基准点,比较两边字符,直到不相等或者达到临界值(下标小于0 或者大于length).
"abba",把每个字符串中间两个字母,作为基准点,比较两边的字符,直到不相等或者达到临界值(下标小于0 或者大于length).

上一篇下一篇

猜你喜欢

热点阅读