# Two Pointers - Longest Palindromic Substring

All diagrams presented herein are original creations, meticulously designed to enhance comprehension and recall. Crafting these aids required considerable effort, and I kindly request attribution if this content is reused elsewhere.

Difficulty: Easy

Two Pointers

## Problem

Given a string `s`

, return *the longest* *palindromic* *substring* in `s`

.

**Example 1:**

1
2
3

Input: s = "babad"
Output: "bab"
Explanation: "aba" is also a valid answer.

**Example 2:**

1
2

Input: s = "cbbd"
Output: "bb"

## Solution

The solution is self explanatory. Traverse the array and try to find palindrome for each index based on odd or even length string.

1
2
3
4
5
6

for i in range(len(s)):
# odd length
find_palindrome(i,i)
# even length
find_palindrome(i,i+1)

## Final Code

Here is the full code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

def longest_palindrome(s):
res=""
resLen=0
def findPalindrome(l,r):
nonlocal resLen,res
while l>=0 and r< len(s) and s[l]==s[r]:
if resLen < (r-l+1):
res=s[l:r+1]
resLen=r-l+1
l-=1
r+=1
for i in range(len(s)):
# odd length
findPalindrome(i , i )
# even length
findPalindrome(i , i+1 )
return res

This post is licensed under CC BY 4.0 by the author.