Leetcode练习 #9 Palindrome Number

来源:互联网 发布:简单软件 编辑:程序博客网 时间:2024/05/20 08:26


题目简析:题意是判断一个数字是否为回文数字,回文的定义自然是和回文字符串意思一样啦,不过数字不是字符串,不能很随意地取出首位末位等对称位置的字符进行比较,当然转换成字符串再比较也是一个方案,不过题目有空间限制,而且这样效率也比较低。因此我的思路是对数字实现一个“逆转”操作,将逆转后数字与原输入数字对比,若一样,自然说明了这个数字是回文数字。

 

      那么如何实现逆转呢?这里我们设定2个数字,一个num1,一个num2num1是输入数字,num2暂时是0,但最后我们会让它变成num1的逆转数字。

       首先我们观察这个“逆转的过程”,假设num1=12321

num1: 12321 -> 1232 -> 123  ->  12   ->     1    ->       0

num2:    0     ->   1     ->  12   ->  123  ->  1232  ->   12321

 

显然,实现逆转的操作很简单,只要不断对num1取除以10的余数(num1%10)把获得的余数添加到num2(num2=num2*10+余数)并对num1减一位(num1/10)不断重复这个过程即可

 

下面附上代码

class Solution {public:    bool isPalindrome(int x) {        if(x<0)            return false;        else if(x<10)            return true;                        int num1=x;        int num2=0;        int n;        while(num1>0){            n=num1%10;            num2=num2*10+n;            num1=num1/10;        }                return (num2==x);    }};


Submission Result: Accepted

Runtime: 0 ms


题目链接:https://leetcode.com/problems/palindrome-number/description/


原创粉丝点击