题目:
给你一个整数 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 };
标签:origin,10,return,int,length1,length,leetcode From: https://www.cnblogs.com/2277241439qaq/p/18329926