📖 Scenario: Imagine you are building a simple program that checks if a word is a palindrome. A palindrome is a word that reads the same forwards and backwards, like "madam" or "racecar".
🎯 Goal: You will create a Java program that checks if a given word is a palindrome by comparing characters from the start and end of the word.
📋 What You'll Learn
Create a String variable with a specific word
Create an integer variable to track the word length
Use a loop to compare characters from start and end
Print whether the word is a palindrome or not
💡 Why This Matters
🌍 Real World
Palindrome detection is useful in text processing, data validation, and coding challenges where symmetry in data matters.
💼 Career
Understanding string manipulation and control flow is essential for software development, especially in roles involving data processing and algorithm design.
Progress0 / 4 steps
1
Create the word to check
Create a String variable called word and set it to the exact value "racecar".
DSA Java
Hint
Use String word = "racecar"; to create the word.
2
Get the length of the word
Add an integer variable called length and set it to the length of word using word.length().
DSA Java
Hint
Use int length = word.length(); to get the word length.
3
Check if the word is a palindrome
Create a boolean variable called isPalindrome and set it to true. Then use a for loop with int i = 0; i < length / 2; i++ to compare characters at positions i and length - 1 - i in word. If they differ, set isPalindrome to false and break the loop.
DSA Java
Hint
Use a for loop to compare characters from start and end, update isPalindrome if mismatch found.
4
Print the result
Use an if statement to print "racecar is a palindrome" if isPalindrome is true, otherwise print "racecar is not a palindrome".
DSA Java
Hint
Use if (isPalindrome) to print the correct message.
Practice
(1/5)
1. What does a palindrome string mean in the context of palindrome detection?
easy
A. A string with all unique characters
B. A string that contains only vowels
C. A string that is sorted alphabetically
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.
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: Palindrome means mirror reading same both ways [OK]
Common Mistakes:
Confusing palindrome with unique characters
Thinking palindrome means sorted string
Assuming palindrome only has vowels
2. Which of the following Java code snippets correctly checks if a string s is a palindrome?
easy
A. for (int i = 0; i < s.length() / 2; i++) { if (s.charAt(i) != s.charAt(s.length() - 1 - i)) return false; } return true;
B. for (int i = 0; i < s.length(); i++) { if (s.charAt(i) != s.charAt(i + 1)) return false; } return true;
C. for (int i = 0; i < s.length() / 2; i++) { if (s.charAt(i) == s.charAt(i + 1)) return false; } return true;
D. for (int i = 0; i < s.length(); i++) { if (s.charAt(i) != s.charAt(s.length() - i)) return false; } return true;
Solution
Step 1: Check loop and character comparison logic
for (int i = 0; i < s.length() / 2; i++) { if (s.charAt(i) != s.charAt(s.length() - 1 - i)) return false; } return true; compares characters from start and end moving towards center correctly.
Step 2: Identify errors in other options
Adjacent chars comparison is incorrect; equality check instead of inequality is wrong; off-by-one index error.
Final Answer:
for (int i = 0; i < s.length() / 2; i++) { if (s.charAt(i) != s.charAt(s.length() - 1 - i)) return false; } return true; -> Option A
Quick Check:
Compare chars from ends moving inward [OK]
Hint: Compare chars from start and end moving inward [OK]
Common Mistakes:
Using wrong indices causing index out of bounds
Comparing adjacent characters instead of mirrored ones
Incorrect loop range causing incomplete checks
3. What will be the output of the following Java code?
String s = "racecar";
boolean isPalindrome = true;
for (int i = 0; i < s.length() / 2; i++) {
if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {
isPalindrome = false;
break;
}
}
System.out.println(isPalindrome);
medium
A. false
B. Compilation error
C. true
D. Runtime exception
Solution
Step 1: Analyze the string and loop logic
String "racecar" is a palindrome. Loop compares mirrored characters correctly.
Step 2: Check if any mismatch occurs
No mismatch found, so isPalindrome remains true and prints true.
Final Answer:
true -> Option C
Quick Check:
"racecar" reads same forwards and backwards [OK]
Hint: Check mirrored chars; no mismatch means true [OK]
Common Mistakes:
Assuming palindrome check fails for odd length strings
Confusing loop range causing missed checks
Misreading output as string instead of boolean
4. Identify the error in the following Java code that attempts to check if a string str is a palindrome:
boolean checkPalindrome(String str) {
for (int i = 0; i <= str.length() / 2; i++) {
if (str.charAt(i) != str.charAt(str.length() - i)) {
return false;
}
}
return true;
}
medium
A. The loop condition should be i < str.length() / 2 instead of <=.
B. The index str.length() - i causes an index out of bounds error.
C. The method should return void instead of boolean.
D. The comparison operator should be == instead of !=.
Solution
Step 1: Check index usage in charAt
Index str.length() - i is off by one; last valid index is str.length() - 1.
Step 2: Identify error cause
Accessing str.charAt(str.length() - i) when i=0 causes index out of bounds.
Final Answer:
Index str.length() - i causes out of bounds error -> Option B
Quick Check:
String indices start at 0, max index = length-1 [OK]
Hint: Check if indices go beyond string length - 1 [OK]
Common Mistakes:
Using <= in loop causing extra iteration
Confusing comparison operators
Wrong return type for boolean method
5. Given a list of strings ["level", "world", "deed", "java", "noon"], which Java code snippet correctly returns a new list containing only the palindromes?
hard
A. List<String> palindromes = list.stream().filter(s -> new StringBuilder(s).reverse().toString().equals(s)).collect(Collectors.toList());