运行时间 3ms, 内存占用 420 KB
思想很简单,就是创建一个函数用来提取数字指定位的数字。但是因为 C++ 的 math 库编译时需要指定连接。我不知道能不能用 pow 函数,所以就手动实现了一个比较简陋的,中间调试过程主要是 pow 写错了
class Solution {
int level;
public:
// 获取指定 i 位于 pos 位置的数字
inline int getNumber(int i, int pos){
// 计算 10 的幂
int power10 = 1;
int j = level - pos;
if(j>0){
for(;j>0; --j) power10*=10;
}
i/=power10;
return i % 10;
}
bool isPalindrome(int x) {
// 通过按位指针应该可以。不行,内存不是对称的
if(x<0) return false;
// 计算 x 有几位
for(int i = x; i ; i/=10) ++level;
// 判断回文
for(int i = 1, j = level; i<j; ++i,--j){
if(getNumber(x,i)!=getNumber(x,j)) return false;
}
return true;
}
}; 
京公网安备 11010502036488号