LeetCode #Palindrome Number#

LeetCode #Palindrome Number#





又是个软柿子啊...(主要是今天不知道在哪儿看到一个回文的题目了,然后就特地去LeetCode找了一下,还真有,一次性AC的感觉简直不能再爽)


我的Python版本解答:

"""
Programmer  :   EOF
E-mail      :   jasonleaster@gmail.com
Date        :   2015.04.06
File        :   pn.py
"""

class Solution:
    def isPalindrome(self, x):
        string = str(x)
        length = len(string)
        for i in range(0, length):
            if string[i] != string[length - i - 1] :
                return False
        
        return True

#----------- just for testing ----------


s = Solution()
if s.isPalindrome(123321) :
    print "is palindrome"


下面是皓神的C++解答:

皓神用了两种方法做解答...写了两个isPalindrome()的实现.

// Source : https://oj.leetcode.com/problems/palindrome-number/
// Author : Hao Chen
// Date   : 2014-06-18

/********************************************************************************** 
* 
* Determine whether an integer is a palindrome. Do this without extra space.
* 
* 
* Some hints:
* 
* Could negative integers be palindromes? (ie, -1)
* 
* If you are thinking of converting the integer to string, note the restriction of using extra space.
* 
* You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", 
* you know that the reversed integer might overflow. How would you handle such case?
* 
* There is a more generic way of solving this problem.
* 
*               
**********************************************************************************/

#include <stdio.h>

class Solution {
public:

    bool isPalindrome(int x) {
        if (x<0) {
            return false;
        }
        
        int len=1;
        for (len=1; (x/len) >= 10; len*=10 );
        
        while (x != 0 ) {
            int left = x / len;
            int right = x % 10;
            
            if(left!=right){
                return false;
            }
            
            x = (x%len) / 10;
            len /= 100;
        }
        return true;
    }
    
    bool isPalindrome2(int x) {
        return (x>=0 && x == reverse(x));
    }

private:    
    int reverse(int x) {
        int y=0;

        int n;
        while( x!=0 ){
            n = x%10;
            y = y*10 + n;
            x /= 10;
        }
        return y;
    }
};



int main()
{
    Solution s;
    printf("%d is %d\n", 0, s.isPalindrome(0) );
    printf("%d is %d\n", -101, s.isPalindrome(-101) );
    printf("%d is %d\n", 1001, s.isPalindrome(1001) );
    printf("%d is %d\n", 1234321, s.isPalindrome(1234321) );
    printf("%d is %d\n", 2147447412, s.isPalindrome(2147447412) );
    printf("%d is %d\n", 2142, s.isPalindrome(2142) );
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值