首页 > 其他分享 >LeetCode 7. 整数反转

LeetCode 7. 整数反转

时间:2025-01-22 10:58:35浏览次数:1  
标签:10 int 反转 VALUE 整数 MAX Integer LeetCode

原题链接:LeetCode 7. 整数反转


思路

方法1:数学方法

使用数学方法。
扣出数字的每一位,使用r = r * 10 + x % 10公式将数字反转,判断是否溢出。
判断溢出时可以安全判断,比如x为正数时,将r * 10 + x % 10 > Integer.MAX_VALUE转化成r > (Integer.MAX_VALUE - x % 10) / 10判断,不会在判断过程中发生溢出。

方法2:

将数字转化成字符串,然后使用字符串的自带方法将字符串反转,然后将字符串变成数字。


代码

class Solution {
    public int reverse(int x) {
        int r = 0;
        while (x != 0) {
            if (x > 0 && r > (Integer.MAX_VALUE - x % 10) / 10) return 0;
            if (x < 0 && r < (Integer.MIN_VALUE - x % 10) / 10) return 0;
            r = r * 10 + x % 10;
            x /= 10;
        }
        return r;
    }
}

Java 中使用 Integer.MAX_VALUEInteger.MIN_VALUE代表整数的范围。

标签:10,int,反转,VALUE,整数,MAX,Integer,LeetCode
From: https://www.cnblogs.com/rdisheng/p/18685294

相关文章

  • 从一个无序的整数数组中,找出最小和最大数之间缺失的数字,要求最小的时间复杂度
    为了找出无序整数数组中最小和最大数之间缺失的数字,我们首先需要确定最小和最大的数字。这可以通过遍历数组一次来实现,时间复杂度为O(n),其中n是数组的长度。一旦我们有了最小和最大的数字,我们可以检查它们之间的所有数字是否都存在于数组中。但是,如果直接遍历检查每个数字,时间复......
  • 【LeetCode 刷题】栈与队列-基础操作
    此博客为《代码随想录》字符串章节的学习笔记,主要内容为栈与队列基础操作相关的题目解析。文章目录232.用栈实现队列225.用队列实现栈232.用栈实现队列题目链接classMyQueue:def__init__(self):self.in_s,self.out_s=[],[]......
  • 数据结构与算法之递归: LeetCode 39. 组合总和 (Ts版)
    组合总和https://leetcode.cn/problems/combination-sum/description/描述给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合candid......
  • 【leetcode 22】541. 反转字符串II
    思路:其实在遍历字符串的过程中,只要让i+=(2*k),i每次移动2*k就可以了,然后判断是否需要有反转的区间。因为要找的也就是每2*k区间的起点,这样写,程序会高效很多。classSolution{publicStringreverseStr(Strings,intk){char[]ch=s.toCh......
  • leetcode349-两个数组的交集
    leetcode349实现利用哈希set进行去重,然后循环nums2,如果nums2中的元素是在去重后的num1中出现过的,就存放在set2中,因为最后要返回的是不重复的数组,所以先放在set2,让其进行去重,最后把set2转为数组方法1varintersection=function(nums1,nums2){constset1=[........
  • LeetCode 771. 宝石与石头
    在本篇博客中,我们将探讨如何解决LeetCode上的第771题——宝石与石头。这个问题涉及到字符串的处理和集合的使用,是一个典型的编程问题,适合初学者练习。解题思路解决这个问题的关键在于如何高效地检查stones中的每个字符是否在jewels中。我们可以通过以下步骤来实现:......
  • leetcode 221. 最大正方形
    题目如下数据范围典型的动态规划题。令f(i,j)为以i,j为右下角左边正方形的最大边长,当且仅当f(i,j)>0(即矩阵(ij)不为’0’)时f(i,j)=min(f(i,j-1),f(i-1,j-1),f(i-1,j))对这个方程不太理解的话借用leetcode官方的图也就是说边长为n的正方形可以由3个......
  • 【C】链表算法题2 -- 反转链表
    leetcode链接https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/......
  • LeetCode栈和队列
    栈和队列LeetCode栈和队列刷题记录基础知识栈线性表,只允许在表的一段进行插入和删除操作,满足先进后出原则栈在python中没有特定的类或库函数,一般通过列表(list)或是collections.deque双端队列来实现liststack=[]stack.append(1)#压栈stack.append(2)print(st......
  • LeetCode:78.子集
    LeetCode:78.子集解题思路要求:1、所有子集;2、没有重复元素。网信2268731有出路、有死路。考虑使用回溯算法。解题步骤用递归模拟出所有情况。8731保证接的数字都是后面的数字。收集所有到达递归终点的情况,并返回。时间复杂度:O(2^N),因为每个元素都有两种可能(存在或不存在)空间复......