题解 | #回文数字#
回文数字
http://www.nowcoder.com/practice/35b8166c135448c5a5ba2cff8d430c32
运行时间 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; } };