• 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;
            
        }
    }
  • 相关阅读:
    Mybatis-配置解析
    Mybatis-CRUD
    ExtJS3.4升级ExtJS4.2的问题汇总(转)
    Extjs视频
    Freemarker语法
    JSP 语法/标签
    android 入门-ID
    Win10 VS2015 社区版切换到VS2013社区版 进行维护之前的项目
    Win10 AppBar
    Win10 保存Element到相册
  • 原文地址:https://www.cnblogs.com/aguai1992/p/5754242.html
Copyright © 2020-2023  润新知