[LeetCode] 7. Reverse Integer


Reverse digits of an integer.

Example1:
x = 123, return 321
Example2:
x = -123, return -321

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.


</br>

Solution

This solution is pretty straightforward, we only have to get the last digit of the number and output it. To achieve which, it is obvious to use division; by applying x % 10, and the remainder is the value of that digit.

Other than this, we also have to take care the overflow problem. How can we identify whether there is a overflow? Because the input is a 32-bit signed integer, we can then use a 64-bit long to store the output and compare to the int version of the same output. If two values are not the same, then we can conclude that there should be a overflow.

The code is shown as below.

Java

public class Solution {
    public int reverse(int x) {
        
        int pos = Math.abs(x);
        int divide = pos, len = 0;
        long output = 0;
        
        while (divide > 0){
            divide = divide / 10;
            len ++;
        } 
        
        for (int i = 0; i < len; i++){
            output += (pos % 10) * Math.pow(10,len-i-1);
            pos = pos / 10;
        }
        
        int overflow = (int) output;
        if ( overflow != output )
            return 0;
            
        if(x<0)
            output = -output;
            
        return (int)output;
    }
}

</br>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容