• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

黄文超

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

【LeetCode每日一题】整数反转

整数反转

1、题目描述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

注意:假设环境不允许存储 64 位整数(有符号或无符号)。

示例1:

输入:x = 123
输出:321

示例2:

输入:x = -123
输出:-321

示例3:

输入:x = 120
输出:21

示例4:

输入:x = 0
输出:0

2、算法描述

核心思想:
	主要就是分情况讨论,题目本身很简单,把数字按照字符串的方式反转就行
具体实现:
	1、等于0的情况
		(1)、x == 0
		(2)、x == Integer.MIN_VALUE
		(3)、反转的后x范围比 int的范围还要大
	2、不等于0的情况
		(1)、x < 0 
		(2)、X > 0

3、代码实现

package com.java;

/**
 * @author huangchao
 * @date 2021/5/3 
 */
public class Day31_Solution {
    public int reverse(int x) {
        if (x == 0 || x == Integer.MIN_VALUE) {
            return 0;
        }
        StringBuffer s = new StringBuffer(Integer.toString(Math.abs(x)));
        s.reverse();
        int y = 1;
        if (x < 0) {
            y = -1;
        }

        while (s.charAt(0) == '0') {
            s.delete(0,1);
        }
        Long l = Long.parseLong(s.toString());
        if (l > Integer.MAX_VALUE) {
            return 0;
        }
        return  Integer.parseInt(s.toString()) * y;
    }
}

posted on 2021-05-03 08:26  黄文超  阅读(126)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3