LeetCode Reverse Integer

來源:互聯網
上載者:User

標籤:

最近開始刷刷的Leetcode題,遇到了一道這麼一個簡單的題 Reverse Integer ,然而並沒有看上去的那麼簡單,

特殊的坑就如這道題說的 overflow !

一開始天真的認為就是每個語言自己定義的最大整數,如

  在python中

>>import sys>>print sys.maxint>>2147483647

在c++中:

#include <iostream>int main(){    std::cout<< (unsigned int) -1<<std::endl; //結果是4294967295    return 0;}

於是按照這個認識,所寫代碼如下:(選python是因為用到了python的內建函數的特性)

class Solution:    # @param {integer} x    # @return {integer}    def reverse(self, x):        import sys        if x > (sys.maxint) : return 0        if x >= 0 : return int(str(x)[::-1]) if int(str(x)[::-1]) < sys.maxint else 0        else: return 0-int(str(-x)[::-1]) if int(str(-x)[::-1]) < sys.maxint else 0
Input:  1534236469Output: 9646324351Expected:   0

事實證明太年輕,後來仔細閱讀了提示,才發現


原來這不是一個簡簡單單的例子的假設,而是題目要求,於是改寫為下面的代碼:

class Solution:    # @param {integer} x    # @return {integer}    def reverse(self, x):        import sys        if x > (2**31-1) : return 0        if x >= 0 : return int(str(x)[::-1]) if int(str(x)[::-1]) < (2**31-1) else 0        else: return 0-int(str(-x)[::-1]) if int(str(-x)[::-1]) < (2**31) else 0

這樣結果就正常了,

下面是用c++寫的:

#define max_int (1<<31)-1class Solution {public:    int reverse(int num) {    bool flag = (num<0)?0:1;//判斷輸入的數的正負    num = (num>0)?num:-num;//以非負數處理    int result = 0;    if (num>max_int) {return 0;}    while(num!=0){        if (result >(max_int-num%10)/10){return 0;} //如果已經overflow,就會比max_int小,這樣判斷        result = result*10 + num%10;        std::cout<<result<<std::endl;        num/=10;    }    return (flag)?result:-result;    }};


LeetCode Reverse Integer

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.