题目描述
给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
输入与输出示例
示例一:
输入:x = 123
输出:321
示例二:
输入:x = -123
输出:-321
示例三:
输入:x = 0
输出:0
解题代码
public int reverse(int x) {
if(x == 0) return 0;
int length = NumLength(x); // 整数的位数
int lastzero = LastZero(x); // 以多少个连续不间断的0结尾
String s = Integer.toString(Math.abs(x));
String[] split = s.split("");
StringBuilder sb = new StringBuilder();
for (int i = length-lastzero- 1; i >= 0; i--) {
sb.append(split[i]);
}
String str = sb.toString();
try{
int res = Integer.parseInt(str);
}catch (NumberFormatException e){
return 0;
}
int re = Integer.parseInt(str);
if(x < 0) return -re;
else return re;
}
// 两个功能函数
public int LastZero(int x){
int count = 0;
while(Math.abs(x) % 10 == 0){
x /= 10;
count++;
}
return count;
}
public int NumLength(int x){
int count = 1;
while(Math.abs(x) >= 10){
x /= 10;
count++;
}
return count;
}
虽然题目获得了通过,但不得不承认,以上解题方法的算法时间复杂度与空间复杂度都比较特别差,存在极大的优化与改进空间。目前仅供大家参考,有兴趣的同学可以在评论区留下你的解题思路与进一步优化的方法。
总结
虽然题目获得了通过,但不得不承认,以上解题方法的算法时间复杂度与空间复杂度都特别差,存在极大的优化与改进空间。目前仅供大家参考,有兴趣的同学可以在评论区留下你的解题思路与进一步优化的方法。
本文探讨如何改进LeetCode中的32位整数反转问题的解法,关注算法效率优化,降低时间复杂度和空间复杂度,适合初学者交流优化策略。
1097

被折叠的 条评论
为什么被折叠?



