diff --git a/problems/0005.最长回文子串.md b/problems/0005.最长回文子串.md index c78b827c..d9ddcc60 100644 --- a/problems/0005.最长回文子串.md +++ b/problems/0005.最长回文子串.md @@ -288,7 +288,34 @@ class Solution: return s[left:right + 1] ``` +> 双指针法: +```python +class Solution: + def longestPalindrome(self, s: str) -> str: + def find_point(i, j, s): + while i >= 0 and j < len(s) and s[i] == s[j]: + i -= 1 + j += 1 + return i + 1, j + + def compare(start, end, left, right): + if right - left > end - start: + return left, right + else: + return start, end + + start = 0 + end = 0 + for i in range(len(s)): + left, right = find_point(i, i, s) + start, end = compare(start, end, left, right) + + left, right = find_point(i, i + 1, s) + start, end = compare(start, end, left, right) + return s[start:end] + +``` ## Go ```go