博客
关于我
力扣(LeetCode) -- 算法第七题-- 整数反转
阅读量:343 次
发布时间:2019-03-04

本文共 1150 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要将给定的32位有符号整数反转数字部分,并检查反转后的结果是否超过32位整数的范围。如果超出范围,则返回0。

方法思路

  • 处理符号:首先判断输入整数的符号,处理绝对值部分进行反转。
  • 反转数字:使用循环逐步反转数字,每次取出个位数字并将其添加到结果中。
  • 检查范围:在每一步反转过程中,检查反转后的结果是否会超过32位整数的最大值或最小值。如果超过,立即返回0。
  • 返回结果:如果反转后的结果在范围内,考虑符号并返回结果。
  • 解决代码

    public class Solution {    public int reverse(int x) {        if (x == 0) {            return 0;        }        int sign = x < 0 ? -1 : 1;        long xAbs = Math.abs((long) x);        long reversed = 0;        while (xAbs != 0) {            int digit = (int) (xAbs % 10);            xAbs /= 10;            long temp = reversed * 10 + digit;            if (temp > Integer.MAX_VALUE) {                return 0;            }            if (temp < Integer.MIN_VALUE) {                return 0;            }            reversed = temp;        }        if (sign == -1) {            if (reversed < Integer.MIN_VALUE) {                return 0;            }            return - (int) reversed;        }        return (int) reversed;    }}

    代码解释

  • 符号处理:首先检查输入值是否为0,如果是,则直接返回0。否则,记录符号并处理绝对值部分。
  • 循环反转:使用循环逐步取出数字个位,构建反转后的结果。
  • 范围检查:在每一步反转后,检查结果是否超过整数范围,如果超过,立即返回0。
  • 符号恢复:如果输入值为负数,检查结果是否在最小值范围内,否则返回反转结果。
  • 这种方法确保了在每一步都检查结果是否在允许范围内,从而避免了溢出或错误结果。

    转载地址:http://rbse.baihongyu.com/

    你可能感兴趣的文章
    oauth2登录认证之SpringSecurity源码分析
    查看>>
    OAuth2:项目演示-模拟微信授权登录京东
    查看>>
    OA系统多少钱?OA办公系统中的价格选型
    查看>>
    OA系统选型:选择好的工作流引擎
    查看>>
    OA让企业业务流程管理科学有“据”
    查看>>
    OA项目之我的会议(会议排座&送审)
    查看>>
    OA项目之我的会议(查询)
    查看>>
    Object c将一个double值转换为时间格式
    查看>>
    object detection之Win10配置
    查看>>
    object detection训练自己数据
    查看>>
    object detection错误Message type "object_detection.protos.SsdFeatureExtractor" has no field named "bat
    查看>>
    object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
    查看>>
    object detection错误之no module named nets
    查看>>
    Object of type 'ndarray' is not JSON serializable
    查看>>
    Object Oriented Programming in JavaScript
    查看>>
    object references an unsaved transient instance - save the transient instance before flushing
    查看>>
    Object.assign用法
    查看>>
    Object.create
    查看>>
    Object.keys()的详解和用法
    查看>>
    objectForKey与valueForKey在NSDictionary中的差异
    查看>>