Skip to content

Commit 6366dda

Browse files
committed
Added longest palindromic substring - Medium
1 parent 9d9c8b0 commit 6366dda

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution {
2+
// Time = O(n^2)
3+
// Space = O(n)
4+
public String longestPalindrome(String s) {
5+
if (s.length() > 0) {
6+
// Loop through the str
7+
String currentLongest = String.valueOf(s.charAt(0));
8+
for (int i = 1; i < s.length(); i++) {
9+
// For palindrome pivoted at i
10+
int[] odd = getPalindrome(s, i - 1, i + 1);
11+
// For palindrome pivoted between i - 1 and i
12+
int[] even = getPalindrome(s, i - 1, i);
13+
int[] longest = odd[1] - odd[0] > even[1] - even[0] ? odd : even;
14+
currentLongest = currentLongest.length() > longest[1] - longest[0] ?
15+
currentLongest : s.substring(longest[0], longest[1]);
16+
17+
}
18+
return currentLongest;
19+
}
20+
return s;
21+
}
22+
public int[] getPalindrome(String s, int left, int right) {
23+
while (left >= 0 && right < s.length()) {
24+
if (s.charAt(left) == s.charAt(right)) {
25+
left--;
26+
right++;
27+
} else {
28+
break;
29+
}
30+
}
31+
return new int[] {left + 1, right};
32+
}
33+
}

0 commit comments

Comments
 (0)