LeetCode第七题--Reverse Integer
Posted 啦啦a德玛西亚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode第七题--Reverse Integer相关的知识,希望对你有一定的参考价值。
Reverse Integer
简介:给定一个32位有符号整数,求整数的反向数字
问题详解:给定一个int 数字,求数字的反转数字
(int4个字节,即-2^31 ~ 2^31-1,即-2,147,483,648~2,147,483,647)
举例:
1.
输入:1234
输出:4321
2.
输入:-1234
输出:-4321
3.
输入:120
输出:21
注意:反转数字后的大小是否在int范围之内
Java解法一:我分成两种情况讨论,正负数,利用StringBuilder().reverse().toString()进行反转,再分别与Integer.MIN_VALUE/Integer.MAX_VALUE比较,符合返回结果值,不符合返回0
官方实现一:Pop and Push Digits & Check before Overflow
我们可以一次构建一个反向整数.在这样做的同时,我们可以事先检查是否附加另一个数字会导致溢出
算法:
可以与反转字符串类似地完成反转整数
要在不借助某些辅助堆栈/数组的情况下“弹出”和“推”数字,我们可以使用数学
//弹出操作:
pop = x%10;
x / = 10;
//推送操作:
temp = rev * 10 + pop;
rev = temp;
复杂度分析:
时间复杂度: O(log(x))
空间复杂度: O(1).
注:
1.数学运算
舍掉小数取整:Math.floor(3.5)=3
四舍五入取整:Math.round(3.5)=4
进位取整:Math.ceil(3.1)=4
取绝对值:Math.abs(-3.5)=3.5
取余数:A%B = 余数
2.Long - int 转换
*将long型转化为int型,这里的long型是基础类型:
long a = 10; int b = (int)a;
*将Long型转换为int 型的,这里的Long型是包装类型:
Long a = 10; int b=a.intValue();
*将int型转化为long型,这里的int型是基础类型:
int a = 10;long b = (int)a;
*将Integer型转化为long型,这里的Integer型是包装类型:
int a = 10;Long b = a.longValue();
3.java中基本数据类型:
byte 1字节
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
char 2字节
boolean 1字节
4.字符串反转
new StringBuilder(string).reverse().toString()
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海
以上是关于LeetCode第七题--Reverse Integer的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 力扣7. Reverse Integer 整数反转 Java 解法