您的位置 首页 > 腾讯云社区

LeetCode刷题DAY 1:回文数判断---三猫

相信很多小伙伴都感觉到行业内对模型算法工程师的要求越来越高,这种高要求不仅体现在对专业领域知识的理解应用,更体现在模型师同时要具备独立开发部署能力的用人诉求。So,对于非开发出身的模型师,编程能力从头补吧!

1 题目描述

回文数:如一个整数,从左至右或从右至左读法一样,则该整数为回文数。题目要求:给定一个数字,判断是否为回文数。示例:输入11,从左读、从右读都是11,则返回true;输入123,从左读为123,从右读为321,不一致,因此返回false。

2 解题

思路一:转为字符串判断原字符串与反转后字符串是否一致

回文数转换为字符串时,具有原字符串和反转后字符串相同的特点,而非回文数不具备此特点,因此可以通过这个方式判断是否为回文数。这种思路比较好理解,并且可以发现负数都不为回文数(如:-11从右读是11-),因此可以先将负数返回false,免去后面更多计算。

class Solution: def isPalindrome(self, x: int) : if(x<0) : return False return str(x)==''.join(reversed(str(x))) #输入:15 #输出:false #输入:1331 #输出:true思路二:取模反转拼接

仔细观察回文数,发现将回文数后半部分进行反转,结果跟前半部分一样(如12321,前一半是12,后一半反转后也是12,中间的3不影响整个判断),因此可以利用这个特征通过模运算和向下取整运算,将数字后半部分反转,然后与前半部分比对,得到最终结果。

class Solution: def isPalindrome(self, x: int) : if(x<0 or (x%10==0 and x !=0 )) : # 类似30这种0结尾的数字都不是回文数, # 因此首先通过与10的模运算进行排除 return False a = len(str(x)) old = x new = 0 for i in range(0,ceil(a/2)): new = new*10+old%10 # %为模运算 old = old//10 # //为向下取整 return new == old or old==new//10 #输入:15 #输出:false #输入:1331 #输出:true ---来自腾讯云社区的---三猫

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: