码迷,mamicode.com
首页 > 其他好文 > 详细

求最长回文字符串

时间:2016-05-22 23:17:36      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

暴力算法:o(n3)

//暴力算法
public class LongestPalindrome {
    public String longestPalindrome(String s)
    {
        String sub = null;
        int len = 0;
        for(int i = 0; i < s.length(); i ++)
        {
            for(int j = i; j < s.length(); j ++)
            {
                String tmp = s.substring(i,j+1);
                if(isPalindrome(tmp)&&tmp.length()>len)
                {
                    sub = tmp;
                    len = tmp.length();
                }
            }
        }
        return sub;
    }
    public boolean isPalindrome2(String s)
    {
        int len = s.length();
        if(len%2==1)
        {
            //这样写是很愚蠢的。因为既然知道了i是可以用总长度-i得到j,而不是让i和j同时滑动。
            for(int i = 0, j = len-1; i < len/2&&j > len/2; i++,j-- )
            {
                if(s.charAt(i)!=s.charAt(j))
                    return false;
            }
            return true;
        }
        else
        {
            for(int i = 0, j = len-1; i < len/2&&j > len/2; i++,j-- )
            {
                if(s.charAt(i)!=s.charAt(j))
                    return false;
            }
            return true;
        }
    }
    public boolean isPalindrome(String s)
    {
        for(int i = 0; i < s.length()-1; i ++)
        {
            if(s.charAt(i) != s.charAt(s.length()-1-i))
                return false;
        }
        return true;
    }
    
    public static void main(String[] args)
    {
        String s = "abc";
        LongestPalindrome lp = new LongestPalindrome();
        System.out.println(lp.isPalindrome(s));
        System.out.println(lp.longestPalindrome(s));
    }
}

 

求最长回文字符串

标签:

原文地址:http://www.cnblogs.com/masterlibin/p/5518159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!