1. 程式人生 > >【leetcode】Reverse Integer(考慮溢位問題)

【leetcode】Reverse Integer(考慮溢位問題)

7. Reverse Integer

題目描述

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; } };