乘风破浪:LeetCode真题_007_Reverse Integer
一、前言
这是一个比较简单的问题了,将整数翻转,主要考察了取整和取余,以及灵活地使用long型变量防止越界的问题。
二、Reverse Integer
2.1 问题理解
2.2 问题分析与解决
可以看到通过简单地取整和取余运算就能得到答案,但是需要注意越界问题,使用long在Java中8个字节的特性来完成越界检查和处理。
我们的算法:
public class Solution {
/**
* <pre>
* 原题
* Reverse digits of an integer.
* Example1: x = 123, return 321
* Example2: x = -123, return -321
*
* 题目大意
* 输入一个整数对其进行翻转
*
* 解题思路
* 通过求余数求商法进行操作。
*/
public int reverse(int x) {
long tmp = x;
// 防止结果溢出
long result = 0; while (tmp != 0) {
result = result * 10 + tmp % 10;
tmp = tmp / 10;
} // 溢出判断
if (result < Integer.MIN_VALUE || result > Integer.MAX_VALUE) {
result = 0;
} return (int) result;
}
}
三、总结
细节决定成败,对于一些简单的问题,我们也不能掉以轻心,只有沉下心来认真地分析,多做题,多思考,多练习才能游刃有余。