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
✗ Incorrect
A palindrome reads the same backward and forward.
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
✗ Incorrect
Two pointers from start and end compare characters to check palindrome.
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
✗ Incorrect
Converting characters to the same case ensures case-insensitive comparison.
What is the time complexity of palindrome detection in a string of length n?
AO(n^2)
BO(1)
CO(log n)
DO(n)
✗ Incorrect
Checking pairs from start and end requires O(n) time.
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
✗ Incorrect
A mismatch means the string cannot be a palindrome.
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
Step 1: Understand palindrome definition
A palindrome is a word or phrase that reads the same forwards and backwards, ignoring spaces and punctuation.
Step 2: Compare options with definition
Only A string that reads the same forwards and backwards matches this definition exactly.
Final Answer:
A string that reads the same forwards and backwards -> Option D
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
Step 1: Analyze palindrome check logic
We compare characters from start and end moving towards center. If any pair differs, string is not palindrome.
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.
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
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
Step 1: Understand the code logic
The code checks if string "radar" is palindrome by comparing characters from start and end.
Step 2: Trace the loop comparisons
Characters match at all pairs: r-r, a-a, d-d (middle ignored). So flag remains 1.
Final Answer:
1 -> Option B
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
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.
Step 2: Correct index to n - i - 1
Changing to s[n - i - 1] fixes indexing and prevents runtime error.
Final Answer:
Index n - i should be n - i - 1 to avoid out-of-bounds -> Option C
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
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.
Step 2: Perform palindrome check on normalized string
After normalization, check if string reads same forwards and backwards.
Final Answer:
Remove spaces and convert to lowercase, then check palindrome normally -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.