您的位置:首页 > 其它

[Leetcode] 9. Palindrome Number 解题报告

2016-12-10 23:33 706 查看
题目

Determine whether an integer is a palindrome. Do this without extra space.

思路

        题目不难,但仍然有三点需要特别注意:

        1)如果是负数怎么办?假定如果是负数就返回false。

        2)如果你想首先把整数转化为字符串,然后比较字符串是否是回文,那么需要考虑到此时的空间复杂度会变为O(n),其中n是输入整数的位数。

        3)如果你想直接对整数进行翻转,那么空间复杂度为O(1),但是必须要考虑到溢出的情况。

        该算法的时间复杂度为O(n),其中n是输入整数x的位数。

代码

class Solution {
public:
bool isPalindrome(int x) {
if (x < 0)  return false;
int y = 0, z = x;
while (z > 0)
{
int last_num = z % 10;
if (y > (INT_MAX - last_num) / 10)
return false;
y = 10 * y + last_num;
z /= 10;
}
return x == y;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: