刷题之路(九)--判断数字是否回文

Palindrome Number
问题简介:判断输入数字是否是回文,不是返回0,负数返回0
举例:
1:
输入: 121
输出: true

2:
输入: -121
输出: false
解释: 回文为121-,所以负数都不符合

3:
输入: 10
输出: false
解释: 倒序为01,不符合要求

解法一:这道题比较简单,先判断一下,负数返回0,正数可以通过转换为字符串,通过方法反转,再比较两字符串

class Solution {
    public boolean isPalindrome(int x) {
        if(x < 0)return false;
        String change = String.valueOf(x);
        String result = new StringBuilder(change).reverse().toString();
        if(change.equals(result))return true;
        else return false;
    }
}

解法二:Revert half of the number
将一个数字分为前后两部分,通过判断数字的后半段,与前半段比较是否符合回文条件,例如,如果输入是1221,如果我们可以将数字“1221”的后半部分从“21”变为“12”,即满足回文条件.
对于1221,做1221%10,得到最后一位数1,得到第二位到最后一位数,我们需要从1221删除最后一位数,我们可以将它除以10,1221 / 10 = 122.然后我们可以通过模数10,122%10 = 2再次得到最后一位数,如果我们将最后一位数乘以10并加上第二位数,1 * 10 + 2 = 12,它给出我们想要的转换的数字

    if(x<0)return false;
    int tmp = x;
    int reverseN = 0;
    int reminder = 0;
    while (tmp != 0) {
        reminder = tmp % 10;
        reverseN = reverseN * 10 + reminder;
        tmp /= 10;
    }
    return x == reverseN;

小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值