[0009] 回文数
- GitHub
- http://leetcode.xuezhisd.top/post/52979bae.html
- https://leetcode.com/problems/palindrome-number
- https://leetcode-cn.com/problems/palindrome-number
题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
Related Topics
题目解析
- 本题是一道模拟题,关键是如何将整数翻转过来,与原数进行比较
不确定性
- 整数翻转后,值溢出的情况
方法一:字符比较法
分析
- 将整数变为字符串,逐位进行比较
思路
- 先利用to_string()函数将整数转化为字符串
- 由字符串两端开始分别进行对比
注意
- 在进行逐位比较时,可以同时从两端开始
知识点
- 字符串的遍历以及下角标的应用
复杂度
- 时间复杂度O(1)
- 空间复杂度O(1)
代码
1 | bool isPalindrome(int x) { |
方法二:整数翻转法
分析
- 直接对整数进行翻转
思路
- 对整数进行翻转
- 比较翻转后整数与原数是否一致
注意
- 整数类型的取值范围为[−2^31^, 2^31^ − 1] ,因此在翻转时需要注意溢出的情况
知识点
- 将整数从最低位到最高位进行翻转
- 整数类型的取值范围
复杂度
- 时间复杂度O(1)
- 空间复杂度O(1)
代码
1 | bool isPalindrome(int x){ |