Lc7- 整数反转
/** * 给出一个 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)); } }
不恋尘世浮华,不写红尘纷扰
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理