problemeasyalgorithmsispalindrome-3-palindrome-numberispalindrome 3 palindrome numberispalindrome3palindromenumbercheck-if-given-number-is-palindromecheck if given number is palindromecheckifgivennumberispalindromepalindrome-integer-problempalindrome integer problempalindromeintegerproblemleetcode-9leetcode 9leetcode9daily-coding-problem-202daily coding problem 202dailycodingproblem202

Palindrome Number

EasyUpdated: Aug 2, 2025
Practice on:
Video Solutions:

Problem

Determine whether an integer is a palindrome.

Follow up

Do this without extra space.

Definition

[Palindrome Definition](/gk/algorithms/palindrome-definition)

Examples

Example 1:

Input:
x = 121
Output:
 true
Explanation: 121 reads as 121 from left to right and from right to left.

Example 2:

Input:
x = -121
Output:
 false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input:
x = 10
Output:
 false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Solution

Method 1 - Using % and Multiplication by 10

Problems related with numbers are frequently solved by / and %. No need of extra space is required. This problem is similar with the Reverse Integer problem.

  • Modding (%) the input int by 10 will extract off the rightmost digit. example: (1234 % 10) = 4
  • Multiplying an integer by 10 will "push it left" exposing a zero to the right of that number, example: (5 X 10) = 50
  • Dividing an integer by 10 will remove the rightmost digit. (75 / 10) = 7

Note: no extra space here means do not convert the integer to string, since string will be a copy of the integer and take extra space. The space take by div, left, and right can be ignored.

public boolean isPalindrome(int x) {
	//negative numbers are not palindrome
	if (x<0) {
		return false;
	}
	
	// initialize how many zeros
	int div = 1;
	while (x / div >= 10) {
		div *= 10;
	}

	while (x != 0) {
		int left = x / div;
		int right = x % 10;

		if (left != right) {
			return false;
		}
			
		x = (x % div) / 10;
		div /= 100;
	}

	return true;
}

Method 2 - Reverse the number and check if equal

<div class="youtube-embed"><iframe src="https://www.youtube.com/embed/CMNFQQSEOqQ" frameborder="0" allowfullscreen></iframe></div>

public boolean isPalindrome(int x) {
	if (x < 0) {
		return false;
	}

	return x == reverse(x);
}

private int reverse(int x) {
	long reversed = 0, xLong = x;
	while (xLong != 0) {
		long lastDigit = xLong % 10;
		reversed = reversed * 10 + lastDigit;
		xLong = xLong / 10;
	}            
	if (reversed > Integer.MAX_VALUE || reversed < Integer.MIN_VALUE) {
		reversed = 0;
	}
	return (int)reversed;        
}

Method 3 - Convert to string

public boolean isPalindrome(int x) {
	if (x < 0) {
		return false;
	}
	String xStr = Integer.toString(x);
	for (int i = 0; i < xStr.length() / 2; i++) {
		if (xStr.charAt(i) != xStr.charAt(old.length() - i - 1)) {
			return false;
		}
	}
	return true;
}

Comments