leetcode笔记(四)9. Palindrome Number

时间:2023-03-09 14:30:30
leetcode笔记(四)9. Palindrome Number
  • 题目描述

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121
Output: true

Example 2:

Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Follow up:

Coud you solve it without converting the integer to a string?

  • 解题思路

判断一个字符串是回文的算法很容易完成。但对于整数而言,是否也需要先将整数各位存储到数组,然后进行运算呢?

一开始的想法确实是这样,后来一想:

  1. 对于正整数,在转换数组的同时可以计算翻转值。
  2. 负数,根据示例,是不可能为回文数的。
  3. 0,肯定为回文。

感觉这个实现,复杂度依然和位数线性相关,leetcode外文无法访问了,也不能看到更好的解决方案了~

  • 实例代码
class Solution {
public:
bool isPalindrome(int x) {
if(x < )
return false;
if(x == )
return true; int origin = x;
int reverse = ;
while(x > )
{
reverse = (reverse*) + (x%);
x = x / ;
} return (reverse == origin);
}
};