leetcode刷题9 回文数 Palindrome Number(简单) Python Java

题目描述:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例1:

输入: 121
输出: true


示例2:

输入: -121
输出:假
解释:从左向右读,为-121。从右向左读,为121-。因此它不是一个回文数。


示例3:

输入: 10
输出: false
解释:从右向左读,为01。因此它不是一个回文数。

第一种方法,很简单,通过字符串来判断

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        return str(x) == str(x)[::-1]

if __name__ == '__main__':
    s = Solution()
    a = s.isPalindrome(-121)
    print(a)

第二种方法,不将整数转为字符串来解决这个问题

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        
        tmp = x  # 定义一个变量存储x的临时变量
        result = 0  # 定义一个变量存储x倒序后的值
        # 当tmp大于0的时候循环,这里筛选负数
        while tmp > 0:
            # result*10加上result和10取余的数
            result = result * 10 + (tmp % 10)
            # tmp整除10
            tmp = tmp // 10
        return result == x

if __name__ == '__main__':
    s = Solution()
    a = s.isPalindrome(-121)
    print(a)

在pyhon3中是真除法: 3/2=1.5

地板除是//,是取整数位: 3//2=1

表示求余数: 5%2=1

 

以下是Java版本:

首先,负数不是回文数字,其次对数字进行逆转,123变成321这样,如果变换后的数字相等说明是回文数字。

public class PalindromeNumber {
	 public boolean isPalindrome(int x) {
 
	     if (x < 0) {       // 负数不是回访数字
	         return false;
	     }
 
	     long reverse = 0;   // 数字逆转后的值,为了不使用溢出采用long
	     int tmp = x;

	     while (tmp != 0) {   // 求逆转后的值
	         reverse = reverse * 10 + tmp % 10;
	         tmp /= 10;
	     }

	     return x == reverse;   // 判断是否是回文数字
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值