5. Longest Palindromic Substring

这道题的关键点在于,对于字符串的赋值操作要谨慎,尽量采用记录下标的方式,而不是整个字符串的赋值,这样可以节省时间。

public class Solution {
    public String longestPalindrome(String s) {
        String res="";
        int size=s.length();
        int maxLen=0;
        int maxLeft=0;
        int maxRight=0;
        
        
        
        //奇数长度的回文串
        for(int i=0;i<size;i++)
        {
            String temp="";
            int len=1;
            temp+=s.charAt(i);
            int left=i-1;
            int right=i+1;
            while(left>=0&&right<size)
            {
                if(s.charAt(left)==s.charAt(right))
                {
                    //这种写法太耗时间
                    //temp=s.charAt(left)+temp;
                    //temp=temp+s.charAt(right);
                    len+=2;
                    left--;
                    right++;
                    
                }
                else
                    break;
            }
            if(len>maxLen)
            {
                maxLen=len;
                maxLeft=left;
                maxRight=right;
            }
        }
        
        //偶数长度的回文串
        for(int i=0;i<size;i++)
        {
            String temp="";
            int len=0;
            int left=i;
            int right=i+1;
            while(left>=0&&right<size)
            {
                if(s.charAt(left)==s.charAt(right))
                {
                    //每次都进行一个新的字符串的创建,太消耗时间,这里只需要记录
                    //子串的下标即可
//                    temp=s.charAt(left)+temp;
//                    temp=temp+s.charAt(right);
                    len+=2;
                    left--;
                    right++;
                }
                else
                    break;
            }
            if(len>maxLen)
            {
                //记录下最长子串的首尾即可
                maxLen=len;
                maxLeft=left;
                maxRight=right;
            }
        }
        res=s.substring(maxLeft+1, maxRight);
        return res;
        
    }
}

 

posted @ 2016-08-09 18:19  阿怪123  阅读(115)  评论(0编辑  收藏  举报