美文网首页
LeetCode 9

LeetCode 9

作者: Junr_0926 | 来源:发表于2018-10-15 22:53 被阅读0次

    9. Palindrome Number

    判断一个整数是否是回文数。

    • Example 1

    输入:121
    输出: true

    • Example 2

    输入:-121
    输出:false
    解释:回文序列是121-

    • Example 3

    输入:10
    输出:false

    要求:不要转换成字符串

    思路

    首先对于负数,10的倍数直接返回false。
    然后,将输入反转,依次加上x%10,再乘10.
    但是,由于只需要判断是否是回文,也就是前半部分和后半部分是否一致。因此只需要转换一半的数字。
    假设,转换后的是x
    每次从输入中取出最低位(也就是说输入减少了一位数),将x乘10后,将这个最低位放到x的最低位。一直到输入小于或者等于了x,就完成了一半的转换,这时候判断输入和x是否相等,或者是否输入=x/10

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    class Solution {
    public:
        bool isPalindrome(int x) {
            if (x < 0 || (x != 0 && x % 10 == 0))
                return false;
            int rev = 0;
            while (x > rev) {
                rev = rev * 10 + x % 10;
                x = x / 10;
            }
            return (x == rev || x == rev / 10);
        }
    };
    
    int main() {
        Solution solver;
        cout << solver.isPalindrome(1221) << endl;
        cout << solver.isPalindrome(-121) << endl;
    }
    
    Screen Shot 2018-10-15 at 10.47.50 PM.png

    相关文章

      网友评论

          本文标题:LeetCode 9

          本文链接:https://www.haomeiwen.com/subject/cciqzftx.html