Bird
Raised Fist0
DSA Pythonprogramming~30 mins

Longest Palindromic Substring in DSA Python - Build from Scratch

Choose your learning style10 modes available
Longest Palindromic Substring
📖 Scenario: Imagine you are building a text analysis tool that finds the longest palindrome inside a given word or sentence. A palindrome is a word or phrase that reads the same backward as forward, like "racecar" or "madam".
🎯 Goal: Build a Python program that finds the longest palindromic substring inside a given string.
📋 What You'll Learn
Create a variable to hold the input string
Create a helper function to check palindromes
Use loops to find the longest palindromic substring
Print the longest palindromic substring found
💡 Why This Matters
🌍 Real World
Finding palindromes is useful in text analysis, DNA sequence analysis, and error detection in data.
💼 Career
Understanding string manipulation and nested loops is important for software development and algorithm design.
Progress0 / 4 steps
1
Create the input string
Create a variable called input_string and set it to the exact value "babad".
DSA Python
Hint

Use simple assignment like input_string = "babad".

2
Create a helper function to check palindrome
Create a function called is_palindrome that takes a string s and returns True if s is a palindrome, otherwise False. Use slicing s == s[::-1] to check.
DSA Python
Hint

Use def is_palindrome(s): and return s == s[::-1].

3
Find the longest palindromic substring
Create a variable longest as an empty string. Use two nested for loops with variables start and end to check every substring of input_string. If the substring input_string[start:end] is a palindrome and its length is greater than len(longest), update longest to this substring.
DSA Python
Hint

Use nested loops to check all substrings and update longest when you find a longer palindrome.

4
Print the longest palindromic substring
Use print(longest) to display the longest palindromic substring found.
DSA Python
Hint

Use print(longest) to show the result.

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