题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

暴力解法,时间复杂度O(n^2) 空间复杂度O(1);

public int getLongestPalindrome(String A, int n) {
        // write code here
        int max=0;
        for(int i=0;i<n;i++){    //遍历每个字符,每次都把当前字符当做回文的中心
            int sin=0;            //奇数回文字符串的长度
            int dou=0;            //偶数回文字符串的长度
            for(int j=1;j<A.length();j++){    //奇数处理
                int pre = i-j;                //当前字符的第前j个
                int next = i+j;                //当前字符的第后j个
                if(pre<0||next>=A.length()){    //越界则跳出当前循环
                    break;
                }
                if(A.charAt(pre)==A.charAt(next)){//前后第j个相等则数量++
                    sin++;
                }else {                    //否则就跳出当前循环
                    break;
                }
            }
            for(int j=1;j<A.length();j++){    //当做偶数,做同样的处理
                int pre = i-j+1;
                int next = i+j;
                if(pre<0||next>=A.length()){
                    break;
                }
                if(A.charAt(pre)==A.charAt(next)){
                    dou++;
                }else {
                    break;
                }
            }
            max=Math.max(max,Math.max(2*sin+1,2*dou));//比较后更新最大值

        }
        return max;

    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务