LeetCode_2119. 反转两次的数字_java

1、题目

2119. 反转两次的数字https://leetcode.cn/problems/a-number-after-a-double-reversal/

反转 一个整数意味着倒置它的所有位。

例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。

给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。

示例 1:

输入:num = 526

输出:true

解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。

示例 2:

输入:num = 1800

输出:false

解释:反转 num 得到 81 ,接着反转 81 得到 18 ,不等于 num 。

示例 3:

输入:num = 0

输出:true

解释:反转 num 得到 0 ,接着反转 0 得到 0 ,等于 num 。

提示:

0 <= num <= 106

2、题解

思路1:(比较笨的方法)

先反转一次num得到reversed1,再反转一次reversed1得到reversed2,将reversed2与num值进行比较,若相等则返回true,否则返回false。

问题就转变成了"求一个数字num的反转后的值":

先设置一个result来保存反转后的值,取出num的个位数a,我要怎么保存到result中呢,就是每次把result先乘10(即把所有的数位往前移动一位,这样就空出了个位),再把a加上去,最后result中保存的就是num的反转值。

例如:num=123(初始result= 0)

第一轮,a = 123%10 = 3,result = 0*10+3 = 3,a = 123/10 = 12;

第二轮,a = 12%10 = 2,result = 3*10+2 = 32,a = 12/10 = 1;

第三轮,a = 1%10 = 1,result = 32*10+1 = 321,a = 1/10 = 0;

由于a=0了,结束循环,返回result = 321

代码1:

java 复制代码
class Solution {
    public boolean isSameAfterReversals(int num) {

        int reversed1 = reverse(num); //先反转一次num
        int reversed2 = reverse(reversed1); //再反转一次reversed1

        if(reversed2 == num) { //将reversed2与num比较
            return true;
        } else {
            return false;
        }
    }

    //将num反转
    private int reverse(int num) {
        int result = 0; //用来保存反转后的数字
        while (num != 0) {
            int a = num % 10; //取出个位数
            result = result * 10 + a; //将result的值 * 10,再加上a
            num = num / 10; //去掉个位数
        }

        return result;
    }
}

思路2:(非常聪明!!)

当num值不为0,且最后一位数是0时,那反转了一次,位数就肯定减少了,再怎么反转,也不会和刚开始的num值一样了,那就直接判断num != 0时,num的最后一位数是否为0就可以啦!!

代码2:

java 复制代码
class Solution {
    public boolean isSameAfterReversals(int num) {
        if(num != 0 && num%10== 0) { //num不为0且num的个位数是0
            return false;
        } else {
            return true;
        }
    }
}
相关推荐
程序员黑豆4 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
江畔柳前堤5 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
hey_sml5 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo5 小时前
数据结构-环形链表
java·数据结构·链表
Forever Nore6 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
萧瑟余晖7 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
是未才7 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
ttod_qzstudio8 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
罗西的思考8 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX9 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm