Palindrome Number in Java (Without String Conversion)
This guide explains the intuition, optimized approach, and Java implementation for palindrome number in java (without string conversion), with practical tips for interviews and production coding standards.
Problem
Determine if integer x is palindrome.
Better Approach
Instead of reversing full number (risk overflow), reverse only half and compare.
Java Solution
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) return false;
int reversedHalf = 0;
while (x > reversedHalf) {
reversedHalf = reversedHalf * 10 + x % 10;
x /= 10;
}
return x == reversedHalf || x == reversedHalf / 10;
}
}
Complexity
- Time:
O(log10 n) - Space:
O(1)
Edge Cases
- Negative numbers -> false
0-> true- Numbers ending with
0(except0) -> false
Key Takeaways
- Start from the brute-force idea, then derive the optimized invariant.
- Use clean pointer/index boundaries to avoid off-by-one bugs.
- Validate against edge cases (empty input, single element, duplicates, extreme values).