题解 | #回文数字#

回文数字

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;
    }
};
全部评论

相关推荐

有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务