Basic Java Problems¶
This section contains fundamental Java programming problems to help you practice core concepts.
Problem 1: String Reversal¶
Problem Statement¶
Write a Java program to reverse a string without using the built-in reverse() method.
Requirements¶
- Input: A string
- Output: The reversed string
- Constraints: Do not use StringBuffer or StringBuilder reverse() method
Sample Input/Output¶
Input: "Hello, World!"
Output: "!dlroW ,olleH"
Solution Approach¶
- Convert the string to a character array
- Use two pointers (start and end)
- Swap characters at both pointers
- Move pointers towards the center
- Convert back to string
Solution¶
public class StringReversal {
public static String reverse(String input) {
if (input == null || input.isEmpty()) {
return input;
}
char[] chars = input.toCharArray();
int start = 0;
int end = chars.length - 1;
while (start < end) {
// Swap characters
char temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
// Move pointers
start++;
end--;
}
return new String(chars);
}
}
Test Cases¶
@Test
public void testReverse() {
assertEquals("", StringReversal.reverse(""));
assertEquals("a", StringReversal.reverse("a"));
assertEquals("ba", StringReversal.reverse("ab"));
assertEquals("!dlroW ,olleH", StringReversal.reverse("Hello, World!"));
assertNull(StringReversal.reverse(null));
}
Problem 2: Palindrome Check¶
Problem Statement¶
Write a Java program to check if a given string is a palindrome.
Requirements¶
- Input: A string
- Output: Boolean indicating if the string is a palindrome
- Constraints: Ignore case and non-alphanumeric characters
Sample Input/Output¶
Input: "A man, a plan, a canal: Panama"
Output: true
Input: "race a car"
Output: false
Solution Approach¶
- Convert string to lowercase
- Remove non-alphanumeric characters
- Use two pointers to compare characters from both ends
- Return true if all characters match
Solution¶
public class PalindromeCheck {
public static boolean isPalindrome(String input) {
if (input == null || input.isEmpty()) {
return true;
}
// Convert to lowercase and remove non-alphanumeric characters
String cleaned = input.toLowerCase().replaceAll("[^a-z0-9]", "");
int start = 0;
int end = cleaned.length() - 1;
while (start < end) {
if (cleaned.charAt(start) != cleaned.charAt(end)) {
return false;
}
start++;
end--;
}
return true;
}
}
Test Cases¶
@Test
public void testIsPalindrome() {
assertTrue(PalindromeCheck.isPalindrome(""));
assertTrue(PalindromeCheck.isPalindrome("a"));
assertTrue(PalindromeCheck.isPalindrome("A man, a plan, a canal: Panama"));
assertFalse(PalindromeCheck.isPalindrome("race a car"));
assertTrue(PalindromeCheck.isPalindrome(null));
}
Contributing¶
Feel free to add more problems or improve the existing solutions. See our Contributing Guide for details.