Bird
Raised Fist0
DSA Pythonprogramming~10 mins

Longest Palindromic Substring in DSA Python - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to initialize the longest palindrome substring as empty.

DSA Python
longest = [1]
Drag options to blanks, or click blank then click option'
A0
BNone
C""
D[]
Attempts:
3 left
💡 Hint
Common Mistakes
Using None instead of an empty string.
Using a list or number instead of a string.
2fill in blank
medium

Complete the code to expand around the center and return the palindrome substring.

DSA Python
def expand_around_center(s, left, right):
    while left >= 0 and right < len(s) and s[left] == s[right]:
        left -= 1
        right += 1
    return s[[1]:right]
Drag options to blanks, or click blank then click option'
Aleft - 1
Bright - 1
Cleft
Dleft + 1
Attempts:
3 left
💡 Hint
Common Mistakes
Returning s[left:right] which misses the first character.
Returning s[left-1:right] which is out of bounds.
3fill in blank
hard

Fix the error in the code to update the longest palindrome substring correctly.

DSA Python
if len(current) > len(longest):
    longest = [1]
Drag options to blanks, or click blank then click option'
As
Bcurrent
Clongest
Dleft
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning longest to the whole string s.
Assigning longest to left index instead of substring.
4fill in blank
hard

Fill both blanks to correctly find odd length palindromes by expanding around center i.

DSA Python
for i in range(len(s)):
    current = expand_around_center(s, [1], [2])
Drag options to blanks, or click blank then click option'
Ai
Bi + 1
Ci - 1
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using different indices for left and right causing wrong palindrome detection.
Starting from 0 instead of current index i.
5fill in blank
hard

Fill all three blanks to find even length palindromes by expanding around centers i and i+1.

DSA Python
for i in range(len(s)):
    current = expand_around_center(s, [1], [2])
    if len(current) > len(longest):
        longest = [3]
Drag options to blanks, or click blank then click option'
Ai
Bi + 1
Ccurrent
Dlongest
Attempts:
3 left
💡 Hint
Common Mistakes
Using same index for left and right causing odd length palindrome only.
Not updating longest with current substring.

Practice

(1/5)
1. What is the main goal of the Longest Palindromic Substring problem?
easy
A. Count the total number of palindromic substrings
B. Reverse the string and compare with original
C. Check if the entire string is a palindrome
D. Find the longest substring that reads the same forwards and backwards

Solution

  1. Step 1: Understand the problem statement

    The problem asks to find the longest continuous part of the string that reads the same forwards and backwards.
  2. Step 2: Differentiate from related problems

    Counting palindromic substrings or checking the whole string is different from finding the longest palindromic substring.
  3. Final Answer:

    Find the longest substring that reads the same forwards and backwards -> Option D
  4. Quick Check:

    Longest palindromic substring = Find longest palindrome [OK]
Hint: Longest palindrome means longest continuous mirrored substring [OK]
Common Mistakes:
  • Confusing substring with subsequence
  • Counting all palindromes instead of longest
  • Checking whole string palindrome only
2. Which of the following Python code snippets correctly initializes variables to find the longest palindromic substring?
easy
A. start, max_len = 0, 1
B. start = max_len = None
C. start, max_len = 1, 0
D. start = max_len = 0

Solution

  1. Step 1: Understand variable roles

    We need to track the start index and maximum length of the palindrome found. Starting with 0 and 1 is common because a single character is a palindrome.
  2. Step 2: Check initialization correctness

    start, max_len = 0, 1 sets start=0 and max_len=1, which is correct. start, max_len = 1, 0 reverses values incorrectly. Options A, B, and C do not set max_len properly.
  3. Final Answer:

    start, max_len = 0, 1 -> Option A
  4. Quick Check:

    Initialize start=0 and max_len=1 for single char palindrome [OK]
Hint: Start at 0, max length at least 1 for single char palindrome [OK]
Common Mistakes:
  • Setting max_len to 0 initially
  • Using None instead of integers
  • Swapping start and max_len values
3. What will be the output of the following code snippet?
def expand_around_center(s, left, right):
    while left >= 0 and right < len(s) and s[left] == s[right]:
        left -= 1
        right += 1
    return right - left - 1

s = "babad"
length = expand_around_center(s, 1, 1)
print(length)
medium
A. 1
B. 5
C. 3
D. 0

Solution

  1. Step 1: Understand the function behavior

    The function expands around the center indices (left and right) while characters match, then returns the length of the palindrome found.
  2. Step 2: Trace the expansion for s='babad' at center (1,1)

    Center at index 1 ('a'). Expand left=1, right=1: 'a'=='a' true, expand to left=0, right=2: 'b'=='b' true, expand to left=-1 (stop). Length = right - left - 1 = 3 - (-1) - 1 = 3.
  3. Final Answer:

    3 -> Option C
  4. Quick Check:

    Expand around center returns palindrome length 3 [OK]
Hint: Expand while chars match, length = right - left - 1 [OK]
Common Mistakes:
  • Not subtracting 1 in length calculation
  • Confusing indices after expansion
  • Assuming length equals right - left
4. Identify the error in the following code snippet for finding the longest palindromic substring:
def longest_palindrome(s):
    start, max_len = 0, 1
    for i in range(len(s)):
        len1 = expand_around_center(s, i, i)
        len2 = expand_around_center(s, i, i+1)
        length = max(len1, len2)
        if length > max_len:
            start = i - length // 2
            max_len = length
    return s[start:start+max_len]
medium
A. The loop should run till len(s)-1 to avoid index error
B. The start index calculation is incorrect for even length palindromes
C. max_len should be initialized to 0 instead of 1
D. expand_around_center function is missing

Solution

  1. Step 1: Analyze start index update logic

    For even length palindromes, start index calculation differs because center is between two characters. Using i - length // 2 works for odd length but not always for even length.
  2. Step 2: Identify correct start calculation

    For even length, start should be i - (length // 2) + 1 to correctly locate the palindrome start.
  3. Final Answer:

    The start index calculation is incorrect for even length palindromes -> Option B
  4. Quick Check:

    Start index must adjust differently for even palindromes [OK]
Hint: Adjust start index differently for even-length palindromes [OK]
Common Mistakes:
  • Using same start formula for odd and even palindromes
  • Ignoring even length palindrome cases
  • Not updating max_len properly
5. Given the string "forgeeksskeegfor", which substring is the longest palindromic substring?
hard
A. "geeksskeeg"
B. "forgeeksskeegfor"
C. "geeksskeegf"
D. "eksskeeg"

Solution

  1. Step 1: Identify palindromic substrings in the string

    Check substrings that read the same forwards and backwards. "geeksskeeg" is a palindrome of length 10 inside the string.
  2. Step 2: Compare lengths of candidate substrings

    "forgeeksskeegfor" is not a palindrome as a whole. "geeksskeegf" and "eksskeeg" are shorter palindromes.
  3. Final Answer:

    "geeksskeeg" -> Option A
  4. Quick Check:

    Longest palindrome in "forgeeksskeegfor" is "geeksskeeg" [OK]
Hint: Look for longest mirrored substring inside the string [OK]
Common Mistakes:
  • Assuming whole string is palindrome
  • Choosing substring with extra characters
  • Ignoring palindrome length
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard