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()

小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海

猜你喜欢

转载自www.cnblogs.com/lalalaczq/p/10695345.html