乘风破浪:LeetCode真题_007_Reverse Integer
乘风破浪: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; } }
三、总结
细节决定成败,对于一些简单的问题,我们也不能掉以轻心,只有沉下心来认真地分析,多做题,多思考,多练习才能游刃有余。