-
Notifications
You must be signed in to change notification settings - Fork 180
Expand file tree
/
Copy pathq005_LoggestPalindromicSubstring.java
More file actions
87 lines (69 loc) · 2.09 KB
/
q005_LoggestPalindromicSubstring.java
File metadata and controls
87 lines (69 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package leetcode_algorithm;
/**
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"
*/
public class q005_LoggestPalindromicSubstring {
public static void main(String[] args) {
System.out.println(longestPalindrome("abbc"));
System.out.println(longestPalindrome("babad"));
System.out.println(longestPalindrome("abcda"));
}
/**
* ½â·¨1
* @param s
* @return
*/
public static String longestPalindrome(String s) {
int max = 1;
String str = s.length() > 0 ? s.substring(0 , 1) : "";
for(int i = 1;i < s.length();i ++){
for(int j = 0;j< i; j++) {
if(s.charAt(i) == s.charAt(j)){
StringBuilder temp = new StringBuilder(s.substring(j , i+1));
if(temp.toString().equals(temp.reverse().toString())){
if(i - j +1 > max){
max = i - j + 1;
str = temp.toString();
}
break;
}
}
}
}
return str;
}
/**
* ½â·¨2
*
* @param s
* @return
*/
public String longestPalindrome2(String s) {
int len = s.length();
if (len < 2)
return s;
for (int i = 0; i < len-1; i++) {
extendPalindrome(s, i, i); //assume odd length, try to extend Palindrome as possible
extendPalindrome(s, i, i+1); //assume even length.
}
return s.substring(lo, lo + maxLen);
}
private int lo, maxLen;
private void extendPalindrome(String s, int j, int k) {
while (j >= 0 && k < s.length() && s.charAt(j) == s.charAt(k)) {
j--;
k++;
}
if (maxLen < k - j - 1) {
lo = j + 1;
maxLen = k - j - 1;
}
}
}