Bird
Raised Fist0
DSA Pythonprogramming~20 mins

Palindrome Detection in DSA Python - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Palindrome Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Palindrome Check Function
What is the output of the following Python code that checks if a string is a palindrome?
DSA Python
def is_palindrome(s):
    return s == s[::-1]

print(is_palindrome('radar'))
print(is_palindrome('hello'))
AFalse\nFalse
BFalse\nTrue
CTrue\nTrue
DTrue\nFalse
Attempts:
2 left
💡 Hint
Remember that s[::-1] reverses the string s.
🧠 Conceptual
intermediate
1:30remaining
Understanding Palindrome Properties
Which of the following statements about palindromes is TRUE?
AA palindrome cannot contain numbers or special characters.
BA palindrome must be a word with an even number of letters.
CA palindrome reads the same forwards and backwards ignoring spaces and punctuation.
DA palindrome is always a single word without spaces.
Attempts:
2 left
💡 Hint
Think about famous palindrome phrases like 'A man, a plan, a canal, Panama'.
❓ Predict Output
advanced
2:30remaining
Output of Palindrome Check with Filtering
What is the output of this code that checks if a phrase is a palindrome ignoring case and non-alphanumeric characters?
DSA Python
import re

def is_palindrome_phrase(phrase):
    filtered = re.sub(r'[^a-zA-Z0-9]', '', phrase).lower()
    return filtered == filtered[::-1]

print(is_palindrome_phrase('No lemon, no melon'))
print(is_palindrome_phrase('Hello, World!'))
AFalse\nFalse
BTrue\nFalse
CTrue\nTrue
DFalse\nTrue
Attempts:
2 left
💡 Hint
The code removes all characters except letters and numbers and converts to lowercase before checking.
🔧 Debug
advanced
2:00remaining
Identify the Error in Palindrome Function
What error will this code produce when checking if a string is a palindrome?
DSA Python
def check_palindrome(s):
    for i in range(len(s)//2):
        if s[i] != s[len(s)-i]:
            return False
    return True

print(check_palindrome('level'))
AIndexError: string index out of range
BReturns False incorrectly for palindrome strings
CSyntaxError due to missing colon
DReturns True incorrectly for non-palindrome strings
Attempts:
2 left
💡 Hint
Check the indexing inside the loop carefully.
🚀 Application
expert
3:00remaining
Count Palindromic Substrings in a String
Given a string, how many palindromic substrings does it contain? Consider substrings of length 1 or more.
DSA Python
def count_palindromic_substrings(s):
    count = 0
    for i in range(len(s)):
        # Odd length palindromes
        left, right = i, i
        while left >= 0 and right < len(s) and s[left] == s[right]:
            count += 1
            left -= 1
            right += 1
        # Even length palindromes
        left, right = i, i + 1
        while left >= 0 and right < len(s) and s[left] == s[right]:
            count += 1
            left -= 1
            right += 1
    return count

print(count_palindromic_substrings('aaa'))
A6
B3
C4
D5
Attempts:
2 left
💡 Hint
Count all substrings that read the same forwards and backwards, including single letters.

Practice

(1/5)
1. What does it mean if a string is a palindrome?
easy
A. It contains only letters
B. It reads the same forwards and backwards
C. It has an even number of characters
D. It starts and ends with the same letter

Solution

  1. Step 1: Understand palindrome definition

    A palindrome is a word or phrase that reads the same forwards and backwards.
  2. Step 2: Compare options with definition

    Only It reads the same forwards and backwards matches this definition exactly.
  3. Final Answer:

    It reads the same forwards and backwards -> Option B
  4. Quick Check:

    Palindrome = Same forwards and backwards [OK]
Hint: Check if string equals its reverse [OK]
Common Mistakes:
  • Thinking palindrome means only letters
  • Assuming even length only
  • Confusing start/end letters with palindrome
2. Which of the following Python code snippets correctly checks if a string s is a palindrome?
easy
A. s == reversed(s)
B. s == s[1:]
C. s == s.reverse()
D. s == s[::-1]

Solution

  1. Step 1: Understand string reversal in Python

    The slice s[::-1] returns the reversed string.
  2. Step 2: Check each option

    s == s[::-1] compares s to its reversed slice correctly. s == reversed(s) compares to an iterator, not a string. s == s.reverse() tries to use reverse() which is a list method and returns None. s == s[1:] compares to a substring missing the first character.
  3. Final Answer:

    s == s[::-1] -> Option D
  4. Quick Check:

    Use slicing to reverse string [OK]
Hint: Use s == s[::-1] to check palindrome [OK]
Common Mistakes:
  • Using reversed() without join
  • Calling reverse() on string
  • Comparing to wrong substring
3. What will be the output of the following code?
def is_palindrome(s):
    return s == s[::-1]

print(is_palindrome('level'))
print(is_palindrome('world'))
medium
A. True\nFalse
B. False\nTrue
C. True\nTrue
D. False\nFalse

Solution

  1. Step 1: Check 'level' palindrome status

    'level' reversed is 'level', so is_palindrome('level') returns True.
  2. Step 2: Check 'world' palindrome status

    'world' reversed is 'dlrow', which is different, so is_palindrome('world') returns False.
  3. Final Answer:

    True\nFalse -> Option A
  4. Quick Check:

    'level' palindrome True, 'world' not [OK]
Hint: Check string equals reversed string for each input [OK]
Common Mistakes:
  • Assuming all strings are palindrome
  • Mixing output order
  • Confusing print output format
4. Find the error in this palindrome check function:
def check_palindrome(s):
    for i in range(len(s)):
        if s[i] != s[len(s)-i]:
            return False
    return True
medium
A. Function returns True too early
B. Loop should run only half the string length
C. Index out of range error in s[len(s)-i]
D. No error, function is correct

Solution

  1. Step 1: Analyze index usage in loop

    Index len(s)-i is out of range because string indices go from 0 to len(s)-1.
  2. Step 2: Identify correct index for reverse comparison

    It should be len(s)-i-1 to avoid index error.
  3. Final Answer:

    Index out of range error in s[len(s)-i] -> Option C
  4. Quick Check:

    Check index bounds carefully [OK]
Hint: Remember last index is len(s)-1 [OK]
Common Mistakes:
  • Off-by-one error in indexing
  • Looping full length instead of half
  • Ignoring index errors
5. You want to check if a phrase is a palindrome ignoring spaces and capitalization. Which code snippet correctly implements this?
hard
A. s_clean = ''.join(c.lower() for c in s if c.isalpha())\nreturn s_clean == s_clean[::-1]
B. s_clean = s.replace(' ', '')\nreturn s_clean == s_clean[::-1]
C. s_clean = s.lower()\nreturn s_clean == s_clean[::-1]
D. s_clean = ''.join(c for c in s if c.isdigit())\nreturn s_clean == s_clean[::-1]

Solution

  1. Step 1: Understand requirements

    We must ignore spaces and capitalization, and consider only letters.
  2. Step 2: Analyze each option

    s_clean = ''.join(c.lower() for c in s if c.isalpha())\nreturn s_clean == s_clean[::-1] removes non-letters and lowercases all characters, then checks palindrome. s_clean = s.replace(' ', '')\nreturn s_clean == s_clean[::-1] only removes spaces but keeps punctuation and case. s_clean = s.lower()\nreturn s_clean == s_clean[::-1] keeps punctuation and spaces. s_clean = ''.join(c for c in s if c.isdigit())\nreturn s_clean == s_clean[::-1] keeps digits only, ignoring letters.
  3. Final Answer:

    s_clean = ''.join(c.lower() for c in s if c.isalpha())\nreturn s_clean == s_clean[::-1] -> Option A
  4. Quick Check:

    Filter letters and lowercase before palindrome check [OK]
Hint: Filter letters and lowercase before checking [OK]
Common Mistakes:
  • Only removing spaces
  • Ignoring punctuation
  • Not lowercasing letters
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