Palindrome Number

2020/09/07
共 311 字
约 1 分钟
归档: 学习
标签: LeetCode

利用取整和取余来获得首位和尾位


009 Palindrome Number

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true

示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:
你能不将整数转为字符串来解决这个问题吗?

题解1
直接做进阶好了,经典做法就是利用除法取整获得首位数字,利用求余获得尾部数字

/**
 * 题解1
 * 利用取整和取余来获得想要的数字,比如 1221 这个数字,1221 / 1000,得首位1,1221 % 10,得到末尾1
 * @param x
 * @return
 */
public boolean isPalindrome(int x) {
    if (x < 0) return false;
    int d = 1;//除数divisor
    while (x / d >= 10) d *= 10;//使得x/d后只剩下一位数
    while (x > 0) {
        int left = x / d;
        int right = x % 10;
        if (left != right) return false;
        x = (x % d) / 10;//去掉x的头位与末位
        d /= 100;//x少了两位数,除数也少两位
    }
    return true;
}

留言

本站已运行
© 2024 Jack  由 Hexo 驱动
复制成功