9. 回文数

第一次尝试

  给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。LeetCode链接

  • 方法:递归法,令 val 等于 x,保留数字,将数字 x 的个位取出,然后将数字 x 除以 10,直到数字等于零为止,此时开始往回递归,用每一次得到的个位数字,和 val 的个位比较,然后将 val 除以 10,如果比较结果相等,则返回 true,继续往回递归,如果比较的结果不相等,则返回 false;
  • 需要注意的是,我们需要来判断返回的结果,否则就会出错,如果返回的结果是 true,则继续递归,否则直接返回 false;另外我们可以先排除一些绝对不是回文数的数字,例如:负数、个位为零的数字;
bool fun(int x, int* val){
	//如果 x 等于 0,则返回递归
    if(x == 0){
        return true;
    }
    //取出 x 的每个个位
    int m = x % 10;
    //并将 x 除以 10
    x /= 10;
    //如果返回的结果是 false,那么就不需进行下去,直接返回false
    if(!fun(x, val)){
        return false;
    }
    //取出准备好的副本的个位数字
    int n = (*val) % 10;
    (*val) /= 10;
    //二者比较,如果相等返回true
    if(n == m){
        return true;
    }
    //不相等返回false
    return false;
}
bool isPalindrome(int x){
	//排除不可能是回文数的数字
    if(x < 0 || (x % 10 == 0 && x != 0)){
        return false;
    }
    int val = x;
    //开始递归
    return fun(x, &val);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值