• LeetCode_9. Palindrome Number


    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.easy;
    
    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;
    	}
    }
    
  • 相关阅读:
    接口和抽象类的异同点
    实体对象间传值克隆
    什么是反射&反射的8个类的用法
    ERP中反射的两个实例
    基础02 Java 跨平台原理
    基础01 dos命令
    lists删除
    多字段 java对象排序
    Java对象排序
    MySQL表中数据的迁移
  • 原文地址:https://www.cnblogs.com/denggelin/p/11520815.html
Copyright © 2020-2023  润新知