竹笋

首页 » 问答 » 常识 » LeetCode第七题Revers
TUhjnbcbe - 2023/8/12 21:45:00

ReverseInteger

简介:给定一个32位有符号整数,求整数的反向数字

问题详解:给定一个int数字,求数字的反转数字

(int4个字节,即-2^31~2^31-1,即-2,,,~2,,,)

举例:

1.

输入:

输出:

2.

输入:-

输出:-

3.

输入:

输出:21

注意:反转数字后的大小是否在int范围之内

Java解法一:我分成两种情况讨论,正负数,利用StringBuilder().reverse().toString()进行反转,再分别与Integer.MIN_VALUE/Integer.MAX_VALUE比较,符合返回结果值,不符合返回0

官方实现一:PopandPushDigitsCheckbeforeOverflow

我们可以一次构建一个反向整数.在这样做的同时,我们可以事先检查是否附加另一个数字会导致溢出

算法:

可以与反转字符串类似地完成反转整数

要在不借助某些辅助堆栈/数组的情况下“弹出”和“推”数字,我们可以使用数学

//弹出操作:

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型是基础类型:

longa=10;intb=(int)a;

*将Long型转换为int型的,这里的Long型是包装类型:

Longa=10;intb=a.intValue();

*将int型转化为long型,这里的int型是基础类型:

inta=10;longb=(int)a;

*将Integer型转化为long型,这里的Integer型是包装类型:

inta=10;Longb=a.longValue();

3.java中基本数据类型:

byte1字节

short2字节

int4字节

long8字节

float4字节

double8字节

char2字节

boolean1字节

4.字符串反转

newStringBuilder(string).reverse().toString()

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

1
查看完整版本: LeetCode第七题Revers