LeetCode #Palindrome Number#

来源:互联网 发布:ios 判断网络是否可用 编辑:程序博客网 时间:2024/05/17 05:14

LeetCode #Palindrome Number#





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


我的Python版本解答:

"""Programmer  :   EOFE-mail      :   jasonleaster@gmail.comDate        :   2015.04.06File        :   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) );}








0 0
原创粉丝点击