【每日一题】LeetCode 7.整数反转(数学)

【每日一题】LeetCode 7.整数反转(数学)

题目描述

给定一个 32 位的有符号整数 x,编写一个函数,将 x 中的数字部分反转。如果反转后的整数超出了 32 位有符号整数的范围 [-2^31, 2^31 - 1],则返回 0。假设环境不允许存储 64 位整数。

思路分析

  1. 处理正负号 :首先判断输入的整数 x 是否为 0,如果是,则直接返回 0。接着,将 x 转换为绝对值,以便后续处理正整数。
  2. 转换为字符串:将绝对值的整数转换为字符串,这样可以方便地进行反转操作。
  3. 反转字符串 :使用 StringBufferreverse 方法将字符串中的数字顺序反转。
  4. 转换回整数:将反转后的字符串转换回整数。
  5. 判断范围:检查反转后的整数是否在 32 位有符号整数的范围内。如果不在范围内,返回 0。
  6. 处理正负:根据原始整数的正负,返回相应的正数或负数结果。

输入示例

  • 示例 1:输入 x = 123,输出 321
  • 示例 2:输入 x = -123,输出 -321
  • 示例 3:输入 x = 120,输出 21
  • 示例 4:输入 x = 0,输出 0

代码实现

java 复制代码
class Solution {
    public int reverse(int x) {
        // 判断是否为0,直接返回0
        if (x == 0) {
            return 0;
        }
        // 将x转换为绝对值,以便后续处理
        long temp = Math.abs((long) x);
        // 将绝对值转换为字符串
        String str = Long.toString(temp);
        // 使用StringBuffer进行字符串反转
        StringBuffer string = new StringBuffer(str);
        // 反转字符串
        string.reverse();
        // 将反转后的字符串转换回整数
        long res = Long.parseLong(string.toString());
        // 判断反转后的整数是否在32位有符号整数的范围内
        if (res > Integer.MAX_VALUE || res < Integer.MIN_VALUE) {
            return 0;
        } else {
            // 根据原始整数的正负,返回相应的正数或负数结果
            return (x > 0) ? (int) res : (int) -res;
        }
    }
}
相关推荐
叠层归一研究院13 分钟前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
其美杰布-富贵-李1 小时前
08 进阶评估指标与算法特定指标
人工智能·算法
.道阻且长.2 小时前
5.LeetCode算法习题讲解--双指针--有效三角形的个数
算法·leetcode·职场和发展
我是海飞2 小时前
杰理JL703N SSD1306 OLED(128x64) 点阵屏移植说明
单片机·算法·嵌入式·音频·杰理
OH_TPC2 小时前
HarmonyOS APP开发---“滤镜大师“图像处理App,需要用到这个库
java·图像处理·华为·harmonyos·鸿蒙
wabs6663 小时前
关于图论【最短路径之Bellman_ford 算法(单源有限最短路)|卡码网96.城市间货物运输III的思考】
数据结构·算法·图论·卡码网·bellman_ford·单源有限最短路
imaol14 小时前
链表 -- 环链表
java·前端·链表
wuyk5554 小时前
2.队列:先进先出的线性数据结构
c语言·数据结构·stm32·单片机
imaol14 小时前
链表 -- 双向链表
java·前端·链表
2601_963869954 小时前
【计算机毕业设计】基于Java的相框定制系统的设计与实现
java·开发语言·课程设计