【LeetCode】5. Longest Palindromic Substring

来源:互联网 发布:scala和java混合使用 编辑:程序博客网 时间:2024/06/03 19:38

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

Example:

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

Example:

Input: "cbbd"Output: "bb"
       题目大意为在一个字符串中找出最长的回文序列。比较简单的思路就是选择一个中心点,向两边扩张,看是否是回文序列,是则继续扩张,不是记录下长度和当前的子串并与最大值比较找出最大值,然后移动中心点。当将中心点由头移到尾时,就可找出最长的回文序列,代码如下。

  ,    /**       * 选择一个中心点,向两边扩张判断是否是回文,是则继续扩张,不是记录下长度。       * 中心点从0一直移动到字符串末尾       * 即可找出最长回文序列       */        public String longestPalindrome(String s) {           String result="";           if(s.length()<=1)                return s;           int max=0;           for(int i=0;i<2*s.length()-1;i++){               //定义当前中心点下回文序列左右边界起始值              int left=i/2+1;               int right=i/2+1;               if(i%2==0){                   left--;               }               String str=solve(left,right,s);//获得当前中心点下最长的回文序列               if(max<str.length()){                   max=str.length();                   result=str;               }                          }           return result;       }       public String solve(int left,int right,String s){           while(left>=0&&right<s.length()&&s.charAt(left)==s.charAt(right)){//判断是否是回文               left--;               right++;           }           return s.substring(left+1,right);       }


0 0