zoukankan      html  css  js  c++  java
  • 21.Longest Palindromic Substring(最长回文子串)

    Level:

      Medium

    题目描述:

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

    Example 1:

    Input: "babad"
    Output: "bab"
    Note: "aba" is also a valid answer.
    

    Example 2:

    Input: "cbbd"
    Output: "bb"
    

    思路分析:

      找出字符串的最长回文子串,我们遍历字符串,把每一个字符当做是回文串的中间元素,然后设置两个指针向两边扩展,如果两个指针对应的值相同则满足回文串的要求,继续向下扩展,否则停止。以下一个元素为回文串的中间元素,进行与上面相同的操作。最后我们选它们中间最长的串做为结果。

    代码:

    public class Solution{
        int lo,maxlen;  //回文串的起始坐标,和回文串的长度
        public String longestPalindrome(String s){
            if(s.length()<2)
                return s;
            for(int i=0;i<s.length()-1;i++){
                extendPalidrome(i,i,s); //假设回文串的长度为奇数
                extendPalidrome(i,i+1,s);//假设回文串的长度为偶数
            }
            return s.substring(lo,lo+maxlen);
        }
        public void extendPalidrome(int start,int end,String s){
            while(start>=0&&end<s.length&&s.charAt(start)==s.charAt(end)){
                start--;
                end++;
            }
            if(maxlen<end-start-1){   //更新最长回文串的长度
                lo=start+1;
                maxlen=end-start-1;
            }
        }
    }
    
  • 相关阅读:
    PDO 数据访问抽象层
    递归例子
    Windows对象操作:浏览器窗口信息
    练习题:选择器和选择好友
    搭建wamp环境,数据库基础知识
    堆表空间管理
    vc弹出USB的方法. 附试验通过的代码!
    javascript 调用C++函数
    [转]在Win7 64位注册ActiveX控件
    SetForegroundWindow的正确用法
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10727989.html
Copyright © 2011-2022 走看看