Description:
Determine whether an integer is a palindrome. Do this without extra space.
这道题目实现并不难,但题目要求空间复杂度为O(1), 有一定的技巧性。
Solutions:
Solution 1:
|
|
受到LeetCode 7.Reverse Integer 的启发,将原int型的数据完全反转后,比较反转后的数据与原数据是否相同,相同则为回文,反之不是。
Question:这个算法没有考虑到int型数据反转后可能存在的溢出情况,是不是有错误?
Answer: 若反转后的数据比原数据大,那么它一定与原数据不相同,肯定不是回文了,所以这个算法隐性地排除了溢出的情况。
但进一步思考,判断是否为回文需要将整个数字完全反转吗?反转到一半不久可以进行比较了吗?这就引出了Solution 2。
Solution 2:
|
|
这个算法要额外考虑能被10整除的数,需要特别注意。
Solution 3:
|
|
解题思路: 每次提取头尾两个数,判断它们是否相等,判断后去掉头尾两个数。