leetcode: 5. Longest Palindromic Substring
阿新 • • 發佈:2018-12-28
Difficulty
Medium
Description
/**
* 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"
*/
Solution
class Solution {
public int len = 0;
public String str = "";
public String longestPalindrome(String s) {
int n = s.length();
if (n == 0)
return "";
if (n == 1)
return s;
//分成奇數和偶數兩種情況
for (int i = 0; i < n; i++) {
sub (s, i, i);
}
for (int i = 0; i < n - 1; i++) {
sub(s, i, i + 1);
}
return str;
}
//利用短迴文繼續判斷長迴文
public void sub(String s, int i, int j) {
if (s.charAt(i) == s.charAt(j)) {
if (i > 0 && j < s.length()-1) {
sub (s, i - 1, j + 1);
}
if (len < j - i + 1) {
len = j - i + 1;
str = s.substring(i, j + 1);
}
}
}
}