【leetcode】Reverse Integer(考虑溢出问题)

来源:互联网 发布:ubuntu 复制文字 编辑:程序博客网 时间:2024/05/21 08:04

7. Reverse Integer

leetcode题目

题目描述

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321
Example 2:

Input: -123
Output: -321
Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

题解

Solution1:

Runtime: 12ms

About:    if (temp / 10 != result) {        return 0;    } For example, if 'b = a * 10' causes overflow,'b' will be equal to a strange pseudo-random number.So 'b/10' will not be equal to 'a' anymore.
class Solution {public:    int reverse(int x) {        int result = 0;        while(x) {            int temp = result * 10 + x % 10;            if (temp / 10 != result) {                return 0;            }             result = temp;            x /= 10;        }        return result;    }};

Solution2:

Runtime: 16ms

class Solution {public:    int reverse(int x) {        long long ans = 0;        while (x) {            ans = ans * 10 + x % 10;            x /= 10;        }        return ans < INT_MIN || ans > INT_MAX ? 0 : ans;    }};
阅读全文
0 0
原创粉丝点击