Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Constraints
Approach
Links
GeeksforGeeks
ProgramCreek
YouTube
Examples
Input: 121
Output: true
Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Solutions
/**
* Time complexity : O(log10(n)). We divided the input by 10 for every iteration,
* so the time complexity is O(log10(n)).
* Space complexity : O(1)
*/
class Solution {
public boolean isPalindrome(int n) {
if(n < 0 || (n % 10 == 0 && n != 0)) {
return false;
}
int revertedNumber = 0;
while(revertedNumber < n) {
revertedNumber = (revertedNumber*10) + (n%10);
n /= 10;
}
return (revertedNumber == n) || (n == revertedNumber/10);
}
}
Follow up
Could you solve it without converting the integer to a string?