【每日一题】整数反转

news/2024/8/26 18:18:08 标签: leetcode, 算法

题目描述:
在这里插入图片描述
输入输出实例:
在这里插入图片描述

思路:
题目中说的是整数的反转,我们可以很自然的想到stack和stringBuild来实现整数的反转,先将整数转化为字符串,然后对字符串进行操作,实现字符串的反转,最后在进行判断。
需要注意的是,题中提示假设环境只能存储32位的整数,所以不能利用long来存储大于int最大值的整数,当然用int存的话会发生数据溢出,导致结果的不正确。

解析:

首先我们需要实现的是整数的反转。
比如说我们有一个数字123
首先我们取出最后一个数字(123%10=3),赋给res = 3 ;
然后让x/10,x就变成了12,然后再取出末尾的数字,加到res的后面,res就变成了32,进行同样的操作,最后res=321;

int res = 0;//初始化为0
int tmp = x % 10;//最后一位数字
res = res * 10 + tmp;//取出来的尾数,加到res上
x /= 10;//去掉最后一位数字

这样我们就实现了整数的反转。
怎么控制次数呢?
每次我们都对x进行除10操作,当只剩一位数时候,取余数就取的是他本身,当把它加到res上以后,对他进行除10操作以后就等于10le
所以控制条件就为x!=0;

x!=0

最需要注意的一点:
反转后整数的溢出。
int值的范围在-2147483648~2147483647之间
所以我们要对反转的结果就行判断。
题目中说假设只能存储32为的整数,所以我们不能借助long来判断。
那应该怎么判断呢?
我们可以在达到最大整数之前就开始判断,
如下图所示

为什么不用最终的结果判断是不是处于-2147483648~2147483647之间呢,
因为当结果不处于这个范围int会发生溢出,所以不论结果如何,都不可能发生溢出,所以在十位的位置我们就进行判断,

在这//判断是否 大于 最大32位整数
            if (res > 214748364 || (res == 214748364 && tmp > 7)) {
                return 0;
            }
            //判断是否 小于 最小32位整数
            if (res < -214748364 || (res == -214748364 && tmp < -8)) {
                return 0;
            }里插入代码片

最终代码:

public static int reverse4(int x) {
        int res = 0;
        while (x != 0) {
            //每次取末尾数字
            int tmp = x % 10;
            //判断是否 大于 最大32位整数
            if (res > 214748364 || (res == 214748364 && tmp > 7)) {
                return 0;
            }
            //判断是否 小于 最小32位整数
            if (res < -214748364 || (res == -214748364 && tmp < -8)) {
                return 0;
            }
            res = res * 10 + tmp;
            x /= 10;
        }
        return res;
    }

http://www.niftyadmin.cn/n/1440986.html

相关文章

kbmmw中向服务器端传递对象的一种简单方式

运行环境&#xff1a;delphi 10.2kbmmw 5.6.20 在kbmmw 的老版本中&#xff0c;要向服务器传送一个本地的对象&#xff0c;一般都需要进行一些转换&#xff0c;例如通过序列化的方式。 在新版的kbmmw中这一切都变的很简单&#xff0c;使用use... 方法就可以了&#xff0c;非常的…

搜索引擎登记技巧(转)

如何让网站排名靠前总是网上的热门话题。 你可以从许多地方读到别人对此问题的建议&#xff0c;不过许多建议只是传来传去的理论&#xff0c;长期以来没有多少人真正做过检验&#xff0c;哪些理论有效&#xff0c;哪些无效。我对此做过认真的比较&#xff0c;下面&#xff0c;你…

【每日一题】有效的括号

题目描述&#xff1a; 示例&#xff1a; 括号仅由" ( ) { } [ ] "组成。 思路&#xff1a; 首先我们可以定义一个方法&#xff0c;用来返回右括号是否和左括号相匹配。 两个参数&#xff0c;一个为左括号一个为右括号。 public static boolean matches(char a, c…

十二因子应用(三)

原文&#xff1a;https://12factor.net/zh_cn/ III. 配置 将配置保存在环境中 应用的配置是指在各种部署&#xff08;预发&#xff0c;线上&#xff0c;开发环境等&#xff09;时的信息。这包括&#xff1a; 处理数据库&#xff0c;缓存或其他后端服务的资源亚马逊s3或Twitter等…

dts的pci模块中bus-range和ranges

bus-range <2 3>; 该设备&#xff08;一般为RC&#xff09;下的pci总线号范围 ranges <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000 0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>; ranges表示资源配置信息&#xff0…

029 c3p0的小测试

今天被问到这个问题&#xff0c;就实验了一下&#xff0c;后续会继续补充一些配置项的意思。 一&#xff1a;操作步骤 1.大纲 2.新建sql 1 -- ----------------------------2 -- Table structure for user3 -- ----------------------------4 DROP TABLE IF EXISTS user;5 CREA…

bzoj 3874: [Ahoi2014Jsoi2014]宅男计划

Description 外卖店一共有N种食物&#xff0c;分别有1到N编号。第i种食物有固定的价钱Pi和保质期Si。第i种食物会在Si天后过期。JYY是不会吃过期食物的。 比如JYY如果今天点了一份保质期为1天的食物&#xff0c;那么JYY必须在今天或者明天把这个食物吃掉&#xff0c;否则这个食…

对象的属性,方法块,构造器的初始化顺序(+static关键字)

文章目录前言无继承情况下的对象非静态属性&#xff0c;非静态代码块&#xff0c;构造器的初始化顺序非静态属性、代码块、构造器,和静态属性、静态代码块有继承情况下的对象父类和子类-非静态属性、代码块、构造器,和静态属性、静态代码块关于static修饰的属性和方法前言 在平…