/** * 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 * * 示例 1: * * 输入: 123 输出: 321 示例 2: * * 输入: -123 输出: -321 示例 3: * * 输入: 120 输出: 21 注意: * * 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 * * 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 * */ public class Lc7 { public static int reverse(int x) { boolean negativeNumberFlag = false; if (x < 0) { negativeNumberFlag = true; x *= -1; } int len = 0; int temp = x; while (temp > 0) { temp /= 10; len++; } int[] array = new int[len]; for (int i = 0; i < len; i++) { array[i] = (int) (x % Math.pow(10, i + 1) / Math.pow(10, i)); } long digital = 0; for (int i = array.length - 1, j = 0; i >= 0; i--, j++) { digital += array[i] * Math.pow(10, j); } digital = negativeNumberFlag == true ? digital * -1 : digital; return digital > Integer.MAX_VALUE || digital < Integer.MIN_VALUE ? 0 : (int) digital; } public static int reverse1(int x) { // ·提取原数字的正负性 1正 -1负 int sign = x >= 0 ? 1 : -1; // ·进行数字反转 String s = String.valueOf(x); // ·负号也算在数字里,需要排除 if (sign == -1) { s = s.substring(1); } char ch[] = s.toCharArray(); int len = ch.length; // ·判断数组是奇数还是偶数位,从而选择不同的反转算法 if (len % 2 == 0) { int mid = len / 2 - 1; for (int i = mid, j = mid + 1; i >= 0; i--, j++) { char temp = ch[i]; ch[i] = ch[j]; ch[j] = temp; } } else { int mid = len / 2; for (int i = 1; (i + mid) < len; i++) { char temp = ch[mid - i]; ch[mid - i] = ch[mid + i]; ch[mid + i] = temp; } } // ·排除开头数字为0 s = String.valueOf(ch); int intercept = s.indexOf('0'); if (intercept != -1) { s.substring(0, intercept); } long res = sign * Long.parseLong(s); return (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) ? 0 : (int) res; } public static void main(String[] args) { int digit = -123; // System.out.println(reverse(digit)); System.out.println(reverse1(digit)); } }
Lc7- 整数反转
原创
©著作权归作者所有:来自51CTO博客作者小傻孩丶的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:Lc180-连续出现的数字
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【LeetCode 7】整数反转
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输将数字转
leetcode javascript 字符串 数组 代码实现 -
leetcode(7)整数反转
整数反转是一个老问题了,只不过这里有点诡异,因此拿出来分析分析看题目先:给你一个 32 位的有
leetcode 算法 c++ #include -
【LeetCode7. 整数反转
x[0] != '-': str_x = str_
leetcode python 算法 -
leetcode 7. 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反
数组 while循环 跳出循环