博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Reverse Integer
阅读量:2236 次
发布时间:2019-05-09

本文共 1622 字,大约阅读时间需要 5 分钟。

思路:
1,考虑到 10, 100 的reverse都是1,这个情况就是一般情况的处理即可
2,溢出:只需要考虑 
ret > 214748364 or ret < –214748364,如果ret == -214748364
因为,原始integer一定没有溢出,那么如果长度达到了最大长度,其最高位只能是 1或者2;
反过来把1或者2放在最后一位,也不会溢出,所以不用考虑 ret == -214748364这个情况 
public class Solution {    private static final int maxDiv10 = Integer.MAX_VALUE / 10;    private static final int minDiv10 = Integer.MIN_VALUE / 10;    public int reverse(int x) {        int num = 0;        while(x != 0){            int tmp = x % 10;            if ( num > maxDiv10 || num < minDiv10){                return 0;            }            num = num*10 + tmp;            x /= 10;        }        return num;    }}
———————————第一遍---------- 
解题思路:
1,如果只是reverse,问题就很简单。
2,要考虑到 负数,溢出等问题该怎么处理。

To check for overflow/underflow, we could check if ret > 214748364 or ret < –214748364 before multiplying by 10. On the other hand, we do not need to check if ret == 214748364, why?

class Solution {public:    int reverse(int x) {        bool minus = (x < 0 ? true : false);        x = abs(x);        int ret = 0;        int base = 0;        while (x != 0){            base = x % 10;            x = x / 10;            if (multiplication_is_safe(ret, 10)){                ret *= 10;            }else{                return 0;            }            if (addition_is_safe(ret, base)){                ret += base;            }else{                return 0;            }        }        return minus ? -ret : ret;    }    bool multiplication_is_safe(int32_t a, int32_t b){        int32_t p = a * b;        return !a || p/a == b;    }    bool addition_is_safe(int32_t a, int32_t b){        return (a + b >= 0);    }};

转载地址:http://ijpbb.baihongyu.com/

你可能感兴趣的文章
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>
两年Java开发工作经验面试总结
查看>>
作为Java面试官--谈谈一年来的面试总结
查看>>
两年Java程序员面试经
查看>>
面试心得与总结---BAT、网易、蘑菇街
查看>>
如何面试有2年java工作经验的应聘人员
查看>>
Java实现简单的递归操作
查看>>
面试Java程序员需具备的11个技能
查看>>
HashMap 和 HashTable 到底哪不同 ?
查看>>
Java实现简单的递归操作
查看>>
Struts2工作原理和执行流程图
查看>>
在线预览Word,Excel~
查看>>
hibernate延迟加载(get和load的区别)
查看>>
关于文件拷贝效率问题
查看>>
MyBatis分页插件PageHelper的使用
查看>>
【MyBatis学习01】宏观上把握MyBatis框架
查看>>
【MyBatis学习02】走进MyBatis的世界
查看>>
【MyBatis学习03】原始dao开发方法及其弊端
查看>>
【MyBatis学习04】mapper代理方法开发dao
查看>>