美文网首页算法
2018-01-30 获取最大的回文字符串

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

作者: BlackChen | 来源:发表于2018-01-30 19:13 被阅读15次
    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).

    相关文章

      网友评论

        本文标题:2018-01-30 获取最大的回文字符串

        本文链接:https://www.haomeiwen.com/subject/abzczxtx.html