Bird
Raised Fist0
DSA Javaprogramming~20 mins

Palindrome Detection in DSA Java - 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 for a Simple String
What is the output of the following Java code that checks if a string is a palindrome?
DSA Java
public class Palindrome {
    public static boolean isPalindrome(String s) {
        int left = 0, right = s.length() - 1;
        while (left < right) {
            if (s.charAt(left) != s.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isPalindrome("radar"));
    }
}
Atrue
Bfalse
CCompilation error
DRuntime exception
Attempts:
2 left
💡 Hint
Think about how the characters at the start and end of the string compare.
❓ Predict Output
intermediate
2:00remaining
Output of Palindrome Check with Mixed Case
What is the output of this Java code checking palindrome for a mixed case string?
DSA Java
public class Palindrome {
    public static boolean isPalindrome(String s) {
        int left = 0, right = s.length() - 1;
        while (left < right) {
            if (s.charAt(left) != s.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isPalindrome("Racecar"));
    }
}
Afalse
BRuntime exception
CCompilation error
Dtrue
Attempts:
2 left
💡 Hint
Remember that character comparison is case sensitive.
🔧 Debug
advanced
2:00remaining
Identify the Error in Palindrome Check Code
What error will this Java code produce when checking palindrome?
DSA Java
public class Palindrome {
    public static boolean isPalindrome(String s) {
        int left = 0, right = s.length();
        while (left < right) {
            if (s.charAt(left) != s.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isPalindrome("level"));
    }
}
Afalse
BStringIndexOutOfBoundsException
Ctrue
DCompilation error
Attempts:
2 left
💡 Hint
Check how the right index is initialized and used.
🧠 Conceptual
advanced
2:00remaining
Understanding Palindrome Detection with Ignored Characters
Which approach correctly detects palindromes ignoring spaces and punctuation in Java?
AReverse the string and compare without ignoring any characters.
BCheck palindrome directly without any string modification.
COnly convert to lowercase but keep spaces and punctuation.
DRemove non-alphanumeric characters and convert to lowercase before checking palindrome.
Attempts:
2 left
💡 Hint
Think about how spaces and punctuation affect palindrome checks.
🚀 Application
expert
3:00remaining
Output of Palindrome Check for Linked List
Given a singly linked list representing characters, what is the output after checking if it forms a palindrome?
DSA Java
class Node {
    char val;
    Node next;
    Node(char val) { this.val = val; this.next = null; }
}

public class PalindromeLinkedList {
    public static boolean isPalindrome(Node head) {
        if (head == null) return true;
        Node slow = head, fast = head;
        java.util.Stack<Character> stack = new java.util.Stack<>();
        while (fast != null && fast.next != null) {
            stack.push(slow.val);
            slow = slow.next;
            fast = fast.next.next;
        }
        if (fast != null) slow = slow.next;
        while (slow != null) {
            if (stack.pop() != slow.val) return false;
            slow = slow.next;
        }
        return true;
    }

    public static void main(String[] args) {
        Node head = new Node('a');
        head.next = new Node('b');
        head.next.next = new Node('b');
        head.next.next.next = new Node('a');
        System.out.println(isPalindrome(head));
    }
}
Afalse
BCompilation error
Ctrue
DRuntime exception
Attempts:
2 left
💡 Hint
Think about how the stack helps compare the first half with the second half.

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

  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 "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: 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

  1. 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.
  2. Step 2: Identify errors in other options

    Adjacent chars comparison is incorrect; equality check instead of inequality is wrong; off-by-one index error.
  3. 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
  4. 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

  1. Step 1: Analyze the string and loop logic

    String "racecar" is a palindrome. Loop compares mirrored characters correctly.
  2. Step 2: Check if any mismatch occurs

    No mismatch found, so isPalindrome remains true and prints true.
  3. Final Answer:

    true -> Option C
  4. 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

  1. Step 1: Check index usage in charAt

    Index str.length() - i is off by one; last valid index is str.length() - 1.
  2. Step 2: Identify error cause

    Accessing str.charAt(str.length() - i) when i=0 causes index out of bounds.
  3. Final Answer:

    Index str.length() - i causes out of bounds error -> Option B
  4. 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());
B. List<String> palindromes = list.stream().filter(s -> s.charAt(0) == s.charAt(s.length() - 1)).collect(Collectors.toList());
C. List<String> palindromes = list.stream().filter(s -> s.length() % 2 == 0).collect(Collectors.toList());
D. List<String> palindromes = list.stream().filter(s -> s.equals(s.toUpperCase())).collect(Collectors.toList());

Solution

  1. Step 1: Understand palindrome filtering logic

    List<String> palindromes = list.stream().filter(s -> new StringBuilder(s).reverse().toString().equals(s)).collect(Collectors.toList()); reverses string and compares to original, correctly identifying palindromes.
  2. Step 2: Analyze other options

    Checking only first and last char equality; filtering even length strings; checking uppercase equality; all incorrect.
  3. Final Answer:

    List<String> palindromes = list.stream().filter(s -> new StringBuilder(s).reverse().toString().equals(s)).collect(Collectors.toList()); -> Option A
  4. Quick Check:

    Reverse string equals original means palindrome [OK]
Hint: Reverse string and compare to original to find palindrome [OK]
Common Mistakes:
  • Checking only first and last characters
  • Filtering by string length instead of palindrome
  • Confusing uppercase check with palindrome
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