File tree Expand file tree Collapse file tree 1 file changed +14
-15
lines changed
src/main/java/com/fishercoder/solutions Expand file tree Collapse file tree 1 file changed +14
-15
lines changed Original file line number Diff line number Diff line change 1
1
package com .fishercoder .solutions ;
2
2
3
3
/**
4
+ * 5. Longest Palindromic Substring
5
+ *
4
6
* Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
5
7
6
8
Example:
7
-
8
9
Input: "babad"
9
-
10
10
Output: "bab"
11
-
12
11
Note: "aba" is also a valid answer.
13
- Example:
14
12
13
+ Example:
15
14
Input: "cbbd"
16
-
17
15
Output: "bb"
18
16
*/
19
17
public class _5 {
20
18
21
- private int lo , maxLen ;
19
+ private int low , maxLen ;
22
20
23
21
public String longestPalindrome (String s ) {
24
22
int len = s .length ();
25
- if (len < 2 )
23
+ if (len < 2 ) {
26
24
return s ;
25
+ }
27
26
28
27
for (int i = 0 ; i < len - 1 ; i ++) {
29
28
extendPalindrome (s , i , i ); // assume odd length, try to extend Palindrome as possible
30
29
extendPalindrome (s , i , i + 1 ); // assume even length.
31
30
}
32
- return s .substring (lo , lo + maxLen );
31
+ return s .substring (low , low + maxLen );
33
32
}
34
33
35
- private void extendPalindrome (String s , int j , int k ) {
36
- while (j >= 0 && k < s .length () && s .charAt (j ) == s .charAt (k )) {
37
- j --;
38
- k ++;
34
+ private void extendPalindrome (String s , int left , int right ) {
35
+ while (left >= 0 && right < s .length () && s .charAt (left ) == s .charAt (right )) {
36
+ left --;
37
+ right ++;
39
38
}
40
- if (maxLen < k - j - 1 ) {
41
- lo = j + 1 ;
42
- maxLen = k - j - 1 ;
39
+ if (maxLen < right - left - 1 ) {
40
+ low = left + 1 ;
41
+ maxLen = right - left - 1 ;
43
42
}
44
43
}
45
44
You can’t perform that action at this time.
0 commit comments