问题描述

Reverse digits of an integer.

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

问题分析

题目不难,稍微麻烦的是整型溢出。比如1234567899,倒过来是9987654321,但现在已经超出了整型的最大数了,所以,针对整型溢出需要做一定处理。

代码

class Solution {
public:
    int reverse(int x) {
        int y = 0;
        while(x/10) {
        	int tmp = y*10 + (x%10);
        	// 判断整型溢出,如果 (tmp - x%10)/10 != y 那么就是整型溢出了 
			if(((tmp - x%10)/10) != y) {
				return 0;
			} else {
				y = tmp;
			}
			x/=10;
        }
        int tmp = y*10 + (x%10);
       	// 判断整型溢出,如果 (tmp - x%10)/10 != y 那么就是整型溢出了 
		if(((tmp - x%10)/10) != y) {
			return 0;
		}
		y = tmp;
        return y;
    }
};