文档章节

LeetCode Reverse Integer

L很失败L
 L很失败L
发布于 2015/06/13 09:23
字数 400
阅读 106
收藏 0

最近开始刷刷的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:  1534236469
Output: 9646324351
Expected:   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)-1
class 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;
    }
};


© 著作权归作者所有

共有 人打赏支持
L很失败L
粉丝 2
博文 14
码字总数 7388
作品 0
合肥
程序员
[leetcode] Palindrome Number

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 int......

jdflyfly
2014/06/24
0
0
[leetcode] Reverse Integer

Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Have you thought about this? Here are some good questions to ask before coding. Bonus......

jdflyfly
2014/06/24
0
1
leetcode -- Reverse Integer

Reverse Integer Description Given a 32-bit signed integer, reverse digits of an integer. Example 1: Example 2: Example 3: Note: Assume we are dealing with an environment which c......

leiline
2017/11/07
0
0
LeetCode:Reverse Integer - 翻转数字

1、题目名称 Reverse Integer(翻转数字) 2、题目地址 https://leetcode.com/problems/reverse-integer/ 3、题目内容 英文:Reverse digits of an integer. 中文:翻转一个正整数的各位,形...

北风其凉
2015/09/20
408
0
LeetCode:Palindrome Number - 回文数

1、题目名称 Palindrome Number(回文数) 2、题目地址 https://leetcode.com/problems/palindrome-number 3、题目内容 英文:Determine whether an integer is a palindrome. Do this witho......

北风其凉
2015/09/24
109
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

困扰当前数据中心管理的三大难题

导读 当企业发展到一定程度,或者之前的机房不能满足现在的数据中心使用时,企业会对数据中心进行迁移。那么在数据中心进行迁移的时候会遇到哪些风险呢?针对这些风险我们应该做出怎样的措施来...

问题终结者
2分钟前
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
18分钟前
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
25分钟前
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
32分钟前
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部