代码拉取完成,页面将自动刷新
package com.jackwei.leetcode.t1dt10;
/**
* 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
*
* 示例1:
*
* 输入: 123
* 输出: 321
*
* 示例 2:
*
* 输入: -123
* 输出: -321
* 示例 3:
*
* 输入: 120
* 输出: 21
* 注意:
*
* 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−2^31, 2^31− 1]。
* 请根据这个假设,如果反转后整数溢出那么就返回 0。
*
* 来源:力扣(LeetCode)
* 链接:https://leetcode-cn.com/problems/reverse-integer
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
public class L0007 {
public static void main(String[] args) {
int[] nums = {123, -123, 123456000,123456789, 888999000,-78912300, -1239870089};
for (int num :nums) {
System.out.println(new L0007().reverse(num));
}
}
/**
* 思路:倒着取每一位数字,然后一直*10进行扩大存储。然后原数字依次去除最后一位。
* @param num 原始数字
* @return 反转后数字
*/
public int reverse(int num) {
// 结果存放,必须要大于int,因为反转有溢出问题。
long result = 0;
while (num != 0){
// *10相当于扩大一位 %10相当于取最后一位数字
result = result*10 + num%10;
// 相当于去掉数字的最后一位,比如原数123,执行之后变成12
num /= 10;
}
// 看看是不是超过int最大最小值了
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
return 0;
}
return (int)result;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。