码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode-9-Palindrome Number]

时间:2017-04-03 23:00:51      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:==   举例   while   eth   color   lan   rom   它的   hal   

Determine whether an integer is a palindrome. Do this without extra space.

思路:

判断整数是否为回文数。首先负数不行,举例,假如整数为12345,那么它的反转为54321,与原值不相等,返回false。

假如整数为12321,翻转依然为12321,返回true。

bool isPalindrome(int x)
    {
        int newNum = 0;
        int a = 0;
        int temp = x;
        while (x>0)
        {
            a = x % 10;
            newNum = newNum * 10 + a;
            x = x / 10;
        }
        if (newNum == temp) return true;
        else return false;        
    }

 

其实还有更简便的方法:

那就是提前终止循环,比如12321,第一步转换为1232与1 ,第二步为123与12,再然后是12与123,其实此时已经可以得出结果了。因为123/10 ==12。没必要再计算。

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0|| (x!=0 &&x%10==0)) return false;
        int sum=0;
        while(x>sum)
        {
            sum = sum*10+x%10;
            x = x/10;
        }
        return (x==sum)||(x==sum/10);
    }
};

参考:

https://discuss.leetcode.com/topic/12820/an-easy-c-8-lines-code-only-reversing-till-half-and-then-compare

[leetcode-9-Palindrome Number]

标签:==   举例   while   eth   color   lan   rom   它的   hal   

原文地址:http://www.cnblogs.com/hellowooorld/p/6663781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!