算法之整数反转
Posted shinl00
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法之整数反转相关的知识,希望对你有一定的参考价值。
题目
给出一个 32 位的有符号整数,将这个整数中每位上的数字进行反转。注意不要超出整数数值范围
-- 来自 Leetcode Easy
解决方式
public class Solution {
public int reverse(int x) {
// 方式一:将int整数转化为字符串,再转化为char[]数组进行倒叙遍历
// 执行用时3ms 内存消耗34MB
char[] chars = Integer.toString(x).toCharArray();
int before = 0;
// 如果是负数的话,before向后移一位,从1开始
if (chars[0] == '-') {
before = 1;
}
char save;
for (int end = chars.length - 1; before < end; before++, end--) {
save = chars[before];
chars[before] = chars[end];
chars[end] = save;
}
// 防止超出int范围的报错
int reverse = 0;
try {
reverse = Integer.parseInt(String.valueOf(chars));
} catch (Exception e) {
}
return reverse;
}
public int reverse2(int x) {
// 方式二:将int整数对10进行取模取余
// 执行用时1ms 内存消耗33.5MB
int term;
long b = 0;
while (x != 0) {
// 余数
term = x % 10;
// 向前一位
x = x / 10;
// 造逆序新数字
b = b * 10 + term;
}
if (b > Integer.MAX_VALUE || b < Integer.MIN_VALUE) {
return 0;
}
return (int) b;
}
}
public class Test {
public static void main(String[] args) {
Solution solution = new Solution();
int reverse = solution.reverse2(-3215686);
System.out.println(reverse);
}
}
说
怎么说呢,训练一下自己的逻辑能力,以后再厉害一点,回过头来看看有什么可以up的地方。就不立flag了,总之勤恳的在博客记录自己的学习步伐吧
以上是关于算法之整数反转的主要内容,如果未能解决你的问题,请参考以下文章