leetcode-9

题目:

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是

推导:

自己硬写的。

代码:

 1 class Solution {
 2 public:
 3     bool isPalindrome(int x) {
 4         // 定义 origin 防止 x 后续被修改后无法与 y 进行比较
 5         // 其实这题只需要比较一半的数字就行,我这次是全部比较了
 6         int origin = x;
 7         int origin2 = x;
 8         int length = 0;
 9         int length1 = 0;
10         int y = 0;
11         if (x < 0) return false;
12         if (x < 10 && x >= 0) return true;
13         // 首先计算 x 的长度
14         while (x > 0) {
15             x /= 10;
16             length++;
17         }
18         length1 = length / 2;
19         int length2 = length1;
20         while (length1 > 0) {
21             y = y * 10 + origin % 10;
22             origin /= 10;
23             length1--;
24         }
25         string origin3 = to_string(origin2);
26         string y1 = to_string(y);
27         // 注意:如果length == 0,这里的length2也为0,这就导致我们不能对x为个位数的情况讨论,因此对个位数的讨论要放在最开头。
28         if (y1 == origin3.substr(0,length2)) {
29             return true;
30         } else {
31             return false;
32         }
33     }
34 };

 

posted @ 2024-07-29 14:01  路人呃呃  阅读(7)  评论(0)    收藏  举报