LeetCode 005 Longest Palindromic Substring - Java

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"

 

定位:中等题

找到给定的字符串中的最长的回文子串,可以采取遍历每一个字符,判断有没有可能以其为中心生成回文字串,一旦可能就向两端扩展。有两种情况,一种是以一个字母为中心,另一种为以两个相同字母为中心,当扩展到极限后记录并判断是不是最长的。

 

Java实现如下:

 1 public class Solution {
 2     public String longestPalindrome(String s) {
 3         int len=s.length();
 4         if(len<=1){
 5             return s;
 6         }
 7         int Len=1,maxLen=1;
 8         int i,j;
 9         String str=String.valueOf(s.charAt(0));
10         if(s.charAt(0)==s.charAt(1)){
11             str=s.substring(0,2);
12             maxLen=2;
13         }
14         for(i=1;i<len-1;i++){
15             if(s.charAt(i-1)==s.charAt(i+1)){
16                 j=1;
17                 while(i-j>=0&&i+j<len&&s.charAt(i-j)==s.charAt(i+j)){
18                     j++;
19                 }
20                 j--;
21                 Len=2*j+1;
22                 if(Len>maxLen){
23                     maxLen=Len;
24                     str=s.substring(i-j,i+j+1);
25                 }
26             }
27             if(s.charAt(i)==s.charAt(i+1)){
28                 j=1;
29                 while(i-j+1>=0&&i+j<len&&s.charAt(i-j+1)==s.charAt(i+j)){
30                     j++;
31                 }
32                 j--;
33                 Len=2*j;
34                 if(Len>maxLen){
35                     maxLen=Len;
36                     str=s.substring(i-j+1,i+j+1);
37                 }
38             }
39         }
40         return str;
41     }
42 }
posted @ 2017-06-03 23:08  仰恩  阅读(104)  评论(0编辑  收藏  举报