算法每日一题20190620:整数反转
算法 About 1,724 words题目
难易程度:【简单】
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。
请根据这个假设,如果反转后整数溢出那么就返回 0。
参考答案
博主答案
使用分割字符串方法:
class Solution {
public int reverse(int x) {
String xStr = String.valueOf(Math.abs((long)x));
String[] array = xStr.split("");
StringBuilder temp = new StringBuilder();
for(int i = array.length - 1; i>=0;i--) {
temp.append(array[i]);
}
long tempValue = Long.valueOf(temp.toString());
if(tempValue > Integer.MAX_VALUE) {
return 0;
} else {
return x < 0 ? -(int) tempValue : (int) tempValue;
}
}
}
使用StringBuilder的reverse()方法:
class Solution2 {
public int reverse(int x) {
String xStr = String.valueOf(Math.abs((long)x));
StringBuilder sb = new StringBuilder(xStr);
String temp = sb.reverse().toString();
long tempValue = Long.valueOf(temp);
if(tempValue > Integer.MAX_VALUE) {
return 0;
} else {
return x < 0 ? -(int) tempValue : (int) tempValue;
}
}
}
官方答案
class Solution {
public int reverse(int x) {
int rev = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
rev = rev * 10 + pop;
}
return rev;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
Views: 2,597 · Posted: 2019-06-20
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...