Bird
Raised Fist0
DSA Cprogramming~5 mins

Palindrome Detection in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a palindrome?
A palindrome is a word, number, phrase, or sequence that reads the same backward as forward, like 'madam' or '121'.
Click to reveal answer
beginner
How can you check if a string is a palindrome using two pointers?
Use two pointers: one at the start and one at the end of the string. Move them towards the center, comparing characters. If all pairs match, it's a palindrome.
Click to reveal answer
intermediate
Why is ignoring case important in palindrome detection?
Ignoring case ensures that uppercase and lowercase letters are treated the same, so 'Madam' is recognized as a palindrome just like 'madam'.
Click to reveal answer
intermediate
What is the time complexity of checking a palindrome in a string of length n?
The time complexity is O(n) because each character is checked at most once when comparing pairs from start and end.
Click to reveal answer
beginner
Show a simple C code snippet to check if a string is a palindrome.
#include #include #include int isPalindrome(char str[]) { int left = 0; int right = strlen(str) - 1; while (left < right) { if (tolower(str[left]) != tolower(str[right])) { return 0; // Not palindrome } left++; right--; } return 1; // Palindrome } int main() { char s[] = "Madam"; if (isPalindrome(s)) { printf("Palindrome\n"); } else { printf("Not Palindrome\n"); } return 0; }
Click to reveal answer
What does a palindrome string read the same as?
AOnly backward
BOnly forward
CBackward and forward
DRandom order
Which method is commonly used to check palindrome in a string?
ATwo pointers from start and end
BSorting the string
CReversing the string and comparing
DCounting characters
What should you do to ignore case when checking palindrome?
AConvert characters to lowercase or uppercase before comparing
BIgnore spaces only
CCompare ASCII values directly
DUse only uppercase letters
What is the time complexity of palindrome detection in a string of length n?
AO(n^2)
BO(1)
CO(log n)
DO(n)
If the characters at the two pointers do not match, what can you conclude?
ACheck the next characters
BThe string is not a palindrome
CThe string is a palindrome
DIgnore the mismatch
Explain how to check if a string is a palindrome using the two-pointer technique.
Think about comparing characters from both ends moving inward.
You got /5 concepts.
    Describe why ignoring case is important in palindrome detection and how to implement it in C.
    Consider how 'Madam' and 'madam' should be treated the same.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is a palindrome in the context of strings?
      easy
      A. A string that contains only vowels
      B. A string that ends with a special character
      C. A string with all unique characters
      D. A string that reads the same forwards and backwards

      Solution

      1. Step 1: Understand palindrome definition

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

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

        A string that reads the same forwards and backwards -> Option D
      4. Quick Check:

        Palindrome = same forwards and backwards [OK]
      Hint: Check if string equals its reverse [OK]
      Common Mistakes:
      • Confusing palindrome with unique characters
      • Thinking palindrome means only vowels
      • Assuming palindrome ends with special characters
      2. Which of the following C code snippets correctly checks if a string s is a palindrome?
      easy
      A. for (int i = 0; i < strlen(s)/2; i++) { if (s[i] != s[strlen(s)-1-i]) return 0; } return 1;
      B. for (int i = 0; i < strlen(s); i++) { if (s[i] == s[i+1]) return 1; } return 0;
      C. for (int i = 0; i < strlen(s); i++) { if (s[i] != s[i+1]) return 0; } return 1;
      D. for (int i = 0; i < strlen(s)/2; i++) { if (s[i] == s[strlen(s)-1-i]) return 0; } return 1;

      Solution

      1. Step 1: Analyze palindrome check logic

        We compare characters from start and end moving towards center. If any pair differs, string is not palindrome.
      2. Step 2: Match code with logic

        for (int i = 0; i < strlen(s)/2; i++) { if (s[i] != s[strlen(s)-1-i]) return 0; } return 1; correctly compares s[i] and s[length-1-i] for half the string length and returns 0 if mismatch found, else 1.
      3. Final Answer:

        for (int i = 0; i < strlen(s)/2; i++) { if (s[i] != s[strlen(s)-1-i]) return 0; } return 1; -> Option A
      4. Quick Check:

        Compare front and back chars for half length [OK]
      Hint: Check characters from ends moving inward [OK]
      Common Mistakes:
      • Comparing adjacent characters instead of opposite ends
      • Returning 1 too early inside loop
      • Incorrect loop range causing out-of-bounds
      3. What will be the output of the following C code?
      char s[] = "radar";
      int i, flag = 1;
      int n = strlen(s);
      for (i = 0; i < n/2; i++) {
        if (s[i] != s[n - i - 1]) {
          flag = 0;
          break;
        }
      }
      printf("%d", flag);
      medium
      A. 0
      B. 1
      C. Compilation error
      D. Undefined behavior

      Solution

      1. Step 1: Understand the code logic

        The code checks if string "radar" is palindrome by comparing characters from start and end.
      2. Step 2: Trace the loop comparisons

        Characters match at all pairs: r-r, a-a, d-d (middle ignored). So flag remains 1.
      3. Final Answer:

        1 -> Option B
      4. Quick Check:

        "radar" is palindrome, flag = 1 [OK]
      Hint: Check if string equals reverse, print 1 if yes [OK]
      Common Mistakes:
      • Assuming flag is 0 for palindrome
      • Confusing loop range causing missed checks
      • Misreading string length calculation
      4. Identify the error in this palindrome check code snippet:
      int isPalindrome(char *s) {
        int n = strlen(s);
        for (int i = 0; i <= n/2; i++) {
          if (s[i] != s[n - i]) {
            return 0;
          }
        }
        return 1;
      }
      medium
      A. Loop condition should be i < n/2, not i <= n/2
      B. Function should return void instead of int
      C. Index n - i should be n - i - 1 to avoid out-of-bounds
      D. No error, code works correctly

      Solution

      1. Step 1: Check array indexing in condition

        String indices go from 0 to n-1, so s[n - i] accesses out-of-bounds when i=0.
      2. Step 2: Correct index to n - i - 1

        Changing to s[n - i - 1] fixes indexing and prevents runtime error.
      3. Final Answer:

        Index n - i should be n - i - 1 to avoid out-of-bounds -> Option C
      4. Quick Check:

        Array index must be within 0 to n-1 [OK]
      Hint: Remember last index is length - 1 [OK]
      Common Mistakes:
      • Using wrong loop boundary causing extra iteration
      • Ignoring off-by-one in array indexing
      • Assuming function return type is incorrect
      5. Given a string with mixed case and spaces, which approach correctly checks if it is a palindrome ignoring case and spaces?
      char s[] = "A man a plan a canal Panama";
      hard
      A. Remove spaces and convert to lowercase, then check palindrome normally
      B. Check palindrome directly without modifications
      C. Only convert to lowercase, ignore spaces
      D. Only remove spaces, ignore case

      Solution

      1. Step 1: Normalize string by removing spaces and converting to lowercase

        Spaces and case differences affect palindrome check, so remove spaces and convert all letters to lowercase.
      2. Step 2: Perform palindrome check on normalized string

        After normalization, check if string reads same forwards and backwards.
      3. Final Answer:

        Remove spaces and convert to lowercase, then check palindrome normally -> Option A
      4. Quick Check:

        Normalize string before palindrome check [OK]
      Hint: Clean string first: lowercase + no spaces [OK]
      Common Mistakes:
      • Ignoring spaces causing false negatives
      • Ignoring case differences causing false negatives
      • Checking palindrome on raw string directly
      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