题目描述
9. 回文数
思路
这个题没做出来,其实思路也有就是不知道怎么转化成代码。
举个例子 x=1221, 最左边1 == 最右边1,然后删掉最左最右,看22,直到x为0。中途只要出现过最左最右不相等,return false。不要忘了负数一定return false。
我卡住的地方在于,x=1221不知道怎样获得最高位。以及,循环中不知道怎样删掉最左最右拿到剩下的数。看看代码记住吧,算是个技巧。
代码
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
int div = 1;
while (x/div > 9) div = div * 10;
while (x > 0) {
int left = x / div;
int right = x % 10;
if (left == right) {
x = (x % div) / 10;
} else {
return false;
}
div = div / 100;
}
return true;
}
};
网友评论