LeetCode每日一题--回文数
2020-03-15 18:22
316 查看
【前言】坚持日更LeetCode刷题系列
不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!
【题目】9.回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例:
示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
思路一:很显然我们可以将此整数转化为字符串后,定义两个列表,一个存入原始数据,另一个进行逆转操作,再用列表中的eq函数进行判断即可。代码如下:
import operator class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ x = str(x) #将整数转化为str类型 list1 = [] list2 = [] list1 = list(reversed(x)) #用一个列表存逆转数据 list2 = list(x) #用另一个列表存原始数据 result = operator.eq(list1,list2) #调用eq函数判断两个列表是否相同 return result
运行结果:
Notice:可能有朋友会自然的想到,在比较两个列表是否相同时,直接用
‘==’ 比较运算符,但此种比较方式,只能判断列表内数值是否相等,而不能判断其位置情况,例如:list[1,2,3]和list[2,1,3]在用‘==’比较运算符时会返回true。
补充:看到LeeCode上其他前辈的写法中,我们可以直接用str类型,而不需要将其放入list进行操作,一开始我想通过list来简单的实现逆转操作,可能受上一题的影响,自然而然的想到这种方法,但是我们同样可以 通过字符串的切片操作将其逆转。
关于其中一些知识的链接:
思路二:利用模十的方法,将得到的x每个数码用list存起来,再将其还原为整数,实现首尾数码的调换。对于其中数码最后一位为 0 的整数,以及符号为负的整数进行剔除,但注意其中整数为0的特例,不能进行剔除。代码如下:
class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ if (x!=0 and x%10==0) or x<0: #剔除尾码为0以及负数的情况 return False else: original_num = x #因为之后的x值会改变,因此要存入原始x值 reversed_num = 0 #逆转之后的值 list1 = [] while x>0: list1.append(x%10) x = x//10 for i in range(len(list1)): reversed_num = reversed_num*10+list1[i] if(reversed_num == original_num): return True else: return False
运行结果:
补充:这种算术解法未进行优化,导致运行用时过长,有兴趣的朋友可以查看下面的算法讲解视频,了解更进一步的优化过程。
关于其中一些知识的链接:
分享就到这里了,欢迎大家一起交流讨论。
注明:
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
- 点赞 2
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【leetcode每日一题】【2019-05-06】9. 回文数
- leetcode每日一练:最长回文子串(java)
- 【leetcode每日一题】【2019-04-16】5.最长回文子串
- 每日一题:Leetcode 9.回文数
- LeetCode每日一题——T5. 最长回文子串(中):中心扩散法、未完待续
- leetcode 479. Largest Palindrome Product 最大的回文数字 + 直接暴力真好
- LeetCode算法之最长回文子串(中心扩展算法)
- leetcode 腾讯精选50题 最长回文子串
- LeetCode[5] 最长的回文子串
- leetcode 每日一题 112. Path Sum
- leetCode--回文数
- 每日一练之Remove Element【LeetCode No.27】—删除数组相应值
- LeetCode 132. Palindrome Partitioning II(回文切分)
- 【LeetCode-面试算法经典-Java实现】【05-Longest Palindromic Substring(最大回文字符串)】
- 每日AC--leetCode--PalindromePartitioning--回溯法 递归实现
- LeetCode每日一题--Excel表列序号
- LeetCode每日一题--最大子序和
- Leetcode练习<十二> 判断整数是否为回文
- LeetCode-9.Palindrome Number(求回文数字)
- 每日一恋 LeetCode 92 & 206. Reverse Linked List (反转链表)