- 9. Palindrome Number
- Easy
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
- Example 1:
- Input: 121
- Output: true
- Example 2:
- 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.
- Example 3:
- Input: 10
- Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
- Follow up:
- Coud you solve it without converting the integer to a string?
- package leetcode;
- public class PalindromeNumber {
- @org.junit.Test
- public void test() {
- int number1 = 121;
- int number2 = -121;
- int number3 = 10;
- PalindromeNumber palindromeNumber = new PalindromeNumber();
- System.out.println(palindromeNumber.isPalindrome(number1));
- System.out.println(palindromeNumber.isPalindrome(number2));
- System.out.println(palindromeNumber.isPalindrome(number3));
- }
- public boolean isPalindrome(int x) {
- // Special cases:
- // As discussed above, when x <0, x is not a palindrome.
- // Also if the last digit of the number is 0, in order to be a
- // palindrome,
- // the first digit of the number also needs to be 0.
- // Only 0 satisfy this property.
- if (x < 0 || (x % 10 == 0 && x != 0)) {
- return false;
- }
- int revertedNumber = 0;
- while (x> revertedNumber) {
- revertedNumber = revertedNumber * 10 + x % 10;
- x /= 10;
- }
- // When the length is an odd number, we can get rid of the middle digit
- // by revertedNumber/10
- // For example when the input is 12321, at the end of the while loop we
- // get x = 12, revertedNumber = 123,
- // since the middle digit doesn't matter in palidrome(it will always
- // equal to itself), we can simply get rid of it.
- return x == revertedNumber || x == revertedNumber / 10;
- }
- }
来源: http://www.bubuko.com/infodetail-3198420.html