leetcode:9. 回文数
题目
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121是回文,而123不是。
进阶:你能不将整数转为字符串来解决这个问题吗?
示例:
输入:x = 121输出:true
输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。
解答 & 代码
解法一:反转数字并比较和原数是否相同
class Solution {public:bool isPalindrome(int x) {// 如果是负数,直接返回 falseif(x < 0)return false;// 求反转数 reverseNumint num = x;long long reverseNum = 0; // 注意要用 long long,否则可能会溢出while(num != 0){reverseNum = reverseNum * 10 + num % 10;num = num / 10;}// 如果反转数和原数相同则返回 true,否则返回 falsereturn reverseNum == x;}};
复杂度分析:整数 x
- 时间复杂度
:遍历 x 的所有数位
- 空间复杂度 O(1):
执行结果:
执行结果:通过执行用时:4 ms, 在所有 C++ 提交中击败了 94.77% 的用户内存消耗:5.9 MB, 在所有 C++ 提交中击败了 26.09% 的用户
