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;
        }
    }
}
相关推荐
古月居GYH几秒前
在C++上实现反射用法
java·开发语言·c++
祁思妙想8 分钟前
10.《滑动窗口篇》---②长度最小的子数组(中等)
leetcode·哈希算法
福大大架构师每日一题19 分钟前
文心一言 VS 讯飞星火 VS chatgpt (396)-- 算法导论25.2 1题
算法·文心一言
EterNity_TiMe_34 分钟前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
机器学习之心1 小时前
一区北方苍鹰算法优化+创新改进Transformer!NGO-Transformer-LSTM多变量回归预测
算法·lstm·transformer·北方苍鹰算法优化·多变量回归预测·ngo-transformer
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
ruleslol1 小时前
java基础概念37:正则表达式2-爬虫
java
yyt_cdeyyds1 小时前
FIFO和LRU算法实现操作系统中主存管理
算法