一、时间和题目名称
今天是2021年8月19日是我刷力扣题的第一天,主要解决了了两个简单题目“整数翻转”和“回文数”,现总结回顾如下:
二、题目联系
回文数和整数翻转归根结底是一个题,前者是后者的进阶版,若想做出回文数这一题必须理解清楚整数翻转这一题目的核心。
三、题目实操
整数翻转的题目要求: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 就返回 0。
处理思路:1.首先是先剔除不符合计算条件的0,然后将所有负数全部转化成正整数并使得标志位 赋1,对正整数进行操作处理。
2.设置存储变量temp=0,将上一次得到的temp先扩大10倍然后加上x除以10的余数, 然后再对x进行取整操作。
3.根据标志位调整temp的正负。
4.判断生成temp的数值大小是否符合题目要求,若不符合则返回0。
关键步骤为第2步,务必理解!!!!
代码:
class Solution:
def reverse(self, x: int) -> int:
if x==0:
return 0
flag=0
if x < 0:
flag=1
x=-x
temp=0
while x>0:
temp=temp*10+x%10
x=x//10
if flag:
temp=-temp
if temp <= -pow(2,31) or temp >= pow(2,31)-1:
return 0
return temp
回文数题目要求:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回 文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
处理思路:1.负数一定不是回文数,0一定是回文数,因而需要对上述两种数字直接进行判断。
2.进行整数翻转的第二步,生成相对应的翻转数字。
3.分别对翻转后的数字和原始数字进行取余操作,若获得的余数不相同则该数字一定不 是回文数。
4.然后将temp和num分别除以10取整,以此类推。
回文数的关键步骤有两个:整数翻转和余数比较。
因而说回文数是整数翻转的进阶版!
class Solution:
def isPalindrome(self, x: int) -> bool:
num = x
if x < 0:
return False
elif x == 0:
return True
temp=0
while x > 0:
temp=temp * 10 + x % 10
x = x // 10
while temp > 0:
if temp %10 != num % 10:
return False
temp = temp // 10
num = num // 10
return True