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;
        }
    }
}
相关推荐
2501_903238654 分钟前
Java 9模块开发:Eclipse实战指南
java·开发语言·eclipse·个人开发
励志成为美貌才华为一体的女子12 分钟前
python算法和数据结构刷题[4]:查找算法和排序算法
数据结构·算法·排序算法
test猿21 分钟前
hive为什么建表,表存储什么
java
tt55555555555539 分钟前
每日一题-判断是不是完全二叉树
数据结构·算法
程序猿零零漆1 小时前
SpringCloud系列教程:微服务的未来(二十)Seata快速入门、部署TC服务、微服务集成Seata
java·spring·spring cloud·微服务
君义_noip2 小时前
信息学奥赛一本通 1607:【 例 2】任务安排 2 | 洛谷 P10979 任务安排 2
算法·动态规划·信息学奥赛·斜率优化
我的K84092 小时前
Spring Boot基本项目结构
java·spring boot·后端
因兹菜2 小时前
[LeetCode]day4 977.有序数组的平方
数据结构·算法·leetcode
weixin_537590452 小时前
《C程序设计》第六章练习答案
c语言·c++·算法
码农小苏243 小时前
K个不同子数组的数目--滑动窗口--字节--亚马逊
java·数据结构·算法