• 【Leetcode 02 09】整数反转 回文数


    整数反转

    题目描述:
    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    题目分析

    首先,拿到这道题之后,先审题。有符号的数字需要考虑负数的情况,所以最好先判断以下正负。每一个数字反转,可以先把每一位的数字取出来,然后再利用数学的方法构造出来反转后的整数。以一个三位数345为例,如果想要把5取出来,345/10=34 余5,python有取余数的函数(%)。之后再取4,用刚才的商34除以10取余数,取3也是类似的方法。我们发现这是一个递归的过程,一直取到商为0停止。因此可以写出来递归部分的程序:

            while(x!=0):
                temp = x % 10
                num = num *10 + temp
                x = int(a/10)
    

    但是python的取模是根据向下取整法的,而c/c++/java是基于向零取整的。
    例如:
    在python中 :-53除以10=-6 …7 所以python中 -53%10=7
    在c语言中,-53除以10=-5 … -3 所以c语言中 -53%10=-3
    所以最好还是先取个绝对值再处理,还有也要注意一下0的情况。完整的函数如下:

    class Solution:
        def reverse(self, x: int) -> int:
            num = 0
            a = abs(x)
    
            while(a!=0):
                temp = a % 10
                num = num *10 + temp
                a = int(a/10)
    
            if x > 0 and num <2147483647:
                return num
            elif x < 0 and num <= 2147483647:
                return -num
            else:
                return 0
    

    09 回文数

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
    这两道题非常的相似。所以代码就直接放啦:

    class Solution:
        def isPalindrome(self, x: int) -> bool:
            num = 0
            a = abs(x)
            while (a!=0):
                temp = a % 10  
                a = a // 10
                num = num*10 + temp
            if x >= 0 and num == x:
                return True
            else:
                return False
    
  • 相关阅读:
    Lync二次开发
    Socket 一对多通信
    DBImport V3.1 数据互导工具及文档生成器更新发布
    Sql学习第六天——SQL 巩固练习(用到了前几天几个知识点)
    文件监控
    Google Protocol Buffers 入门
    [原]常用Linux命令总结[Thx for commandlinefu]
    清理SQL Server日志释放文件空间
    ASP.NET MVC动态二级域名及ASP.NET管道机制
    搜索引擎——JobSearch简介
  • 原文地址:https://www.cnblogs.com/zjkstudy/p/12596269.html
Copyright © 2020-2023  润新知