题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123 输出:321
示例 2:
输入:x = -123 输出:-321
示例 3:
输入:x = 120 输出:21
示例 4:
输入:x = 0 输出:0
做题时间
class Solution {
public int reverse(int x) {
}
}
以上给出方法输入参数,完成作答。
题目分析
1、相当于给你一个整数,让你符号不变,从后往前读
2、当反转后整数是 int 值范围内的,则返回,否则返回 0
解答分析
本文只分析本人做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。
解答成功:
执行耗时:1 ms,击败了100.00% 的Java用户
内存消耗:35.7 MB,击败了35.17% 的Java用户
class Solution {
public int reverse(int x) {
//long 类型变量 m 用于输出结果
long m = 0;
//当整除不为 0 时继续
while (x != 0) {
//结果等于上次结果乘 10 加 x 取余 10
m = m * 10 + x % 10;
//x 替换为 x 整除 10
x = x / 10;
}
//将 m 强转成 int 类型与 long 类型 m 比,若相同则返回,否则返回 0
return (int) m == m ? (int) m : 0;
}
}