Bird
Raised Fist0
DSA Cprogramming~10 mins

Palindrome Detection in DSA C - Interactive Practice

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

Complete the code to check if a string is a palindrome by comparing characters from start and end.

DSA C
int isPalindrome(char str[]) {
    int start = 0;
    int end = strlen(str) - 1;
    while (start < end) {
        if (str[start] != str[[1]]) {
            return 0;
        }
        start++;
        end--;
    }
    return 1;
}
Drag options to blanks, or click blank then click option'
Aend
Bstart
C0
Dstrlen(str)
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same index for both characters instead of start and end.
Comparing with a fixed index like 0 or length instead of 'end'.
2fill in blank
medium

Complete the code to calculate the length of the string for palindrome check.

DSA C
int length = [1](str);
Drag options to blanks, or click blank then click option'
Asize
Blength
Cstrlen
Dcount
Attempts:
3 left
💡 Hint
Common Mistakes
Using undefined functions like size or count.
Trying to use length as a function.
3fill in blank
hard

Fix the error in the palindrome check loop condition.

DSA C
while (start [1] end) {
    if (str[start] != str[end]) {
        return 0;
    }
    start++;
    end--;
}
Drag options to blanks, or click blank then click option'
A>
B==
C<=
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using equality or greater than which stops loop too early or causes errors.
Using less than or equal which may cause unnecessary comparisons.
4fill in blank
hard

Fill both blanks to correctly reverse the string for palindrome comparison.

DSA C
int len = strlen(str);
char rev[len + 1];
for (int i = 0; i < len; i++) {
    rev[[1]] = str[[2]];
}
rev[len] = '\0';
Drag options to blanks, or click blank then click option'
Alen - 1 - i
Bi
Clen + i
Di - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same index i for both strings which does not reverse.
Using incorrect index calculations causing out of bounds.
5fill in blank
hard

Fill all three blanks to create a function that returns 1 if palindrome, else 0.

DSA C
int isPalindrome(char str[]) {
    int start = 0;
    int end = [1](str) - 1;
    while (start [2] end) {
        if (str[start] != str[end]) {
            return [3];
        }
        start++;
        end--;
    }
    return 1;
}
Drag options to blanks, or click blank then click option'
Astrlen
B<
C0
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong loop condition operators.
Returning 1 on mismatch instead of 0.

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