Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
【初级算法|字符串】09-整数反转
题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
输入:x = 123
输出:321
输入:x = 120
输出:21
思路分析
和上一题目一样,进行反转,但是本题主要是对整数反转。如果将其转成字符串后,再根据字符串进行反转处理。但是需要注意的是,整数是有符号的,且末尾如果是0的话,反转后转成整数就不能取0了。所以处理的步骤:
- 判断是否是负数,如果是负数,需要去掉负数符号
- 将其转成字符串,转成数组,进行反转
- 反转后的数组如果首位是0则舍去,然后再还原符号
第二种解决方案:
因其是数字,那可以通过计算:除 10 取余数,则得到每一个数的最后一位,即个位数,除数再继续除10,得到十位数,这样不断循环,直到除数只有一位数。需要注意的临界条件就是可能会有数字溢出。
AC 代码
function func_exerise7(num){
let val= 0;
while(num!=0){
let t = num%10;
let newVal = val * 10 + t;
if((newVal-t)/10 != val){
return
}
val = newVal;
num = num /10
}
return val
}
题目来源:leetcode-cn.com/leetbook/re…
\