栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

反转一个数字(276、反转两次的数字)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

反转一个数字(276、反转两次的数字)

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

例如,反转 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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/a-number-after-a-double-reversal

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package cn.fansunion.leecode.isNumber;

import java.util.List;

import cn.fansunion.leecode.kit.Kit;

public class ANumberAfterADoubleReversal {

    

    

    public boolean isSameAfterReversals(int num) {

        if (num == 0) {

            return true;

        }

        return num % 10 != 0;

    }

    public boolean isSameAfterReversals2(int num) {

        if (num >= 0 && num <= 9) {

            return true;

        }

        List numList = Kit.intToDigitList(num);

        List reverseList = Kit.reverseListThenRemoveStartZero(numList);

        List reverseList2 = Kit.reverseListThenRemoveStartZero(reverseList);

        int num2 = Kit.digitListToInt(reverseList2);

        return num == num2;

    }

}

package cn.fansunion.leecode.kit;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Set;

public class Kit {

    

    public static void print(int[] array) {

        if (array == null) {

            System.out.println("The array is null");

            return;

        }

        if (array.length == 0) {

            System.out.println("The array length is 0");

            return;

        }

        for (int index = 0; index < array.length; index++) {

            System.out.print(array[index]);

            if (index != array.length - 1) {

                System.out.print(",");

            } else {

                System.out.println();

            }

        }

    }

    public static int[] setToArray(Set set) {

        int[] nums = new int[set.size()];

        int index = 0;

        for (Integer num : set) {

            nums[index] = num;

            index++;

        }

        return nums;

    }

    

    public static List intToDigitList(int n) {

        List numList = new ArrayList<>();

        while (n >= 10) {

            numList.add(0, n % 10);

            n = n / 10;

        }

        numList.add(0, n);

        return numList;

    }

    

    public static List intToDigitListDesc(int n) {

        // 取模取余

        List list = new ArrayList<>();

        // >=10

        while (n >= 10) {

            list.add(n % 10);

            n = n / 10;

        }

        list.add(n);

        return list;

    }

    public static void main(String[] args) {

        System.out.println(Kit.intToDigitList(1234));

        System.out.println(Kit.intToDigitListDesc(1234));

    }

    

    public static int digitListToInt(List numList) {

        int num = 0;

        for (int index = numList.size() - 1; index >= 0; index--) {

            final int curDigit = numList.get(index);

            final int time = numList.size() - 1 - index;

            num += curDigit * Math.pow(10, time);

        }

        return num;

    }

    public static int digitArrayToInt(int[] numArray) {

        List numList = new ArrayList<>();

        for (int num : numArray) {

            numList.add(num);

        }

        return digitListToInt(numList);

    }

    

    public static List reverseList(List numList) {

        if (numList == null || numList.size() == 1) {

            return numList;

        }

        List reverseList = new ArrayList<>();

        for (int index = numList.size() - 1; index >= 0; index--) {

            reverseList.add(numList.get(index));

        }

        return reverseList;

    }

    

    public static List reverseListThenRemoveStartZero(List numList) {

        List reverseList = reverseList(numList);

        List list = removeStartZero(reverseList);

        return list;

    }

    

    private static List removeStartZero(List reverseList) {

        // 找到第1个非0的index

        int firstNotZeroIndex = -1;

        for (int index = 0; index < reverseList.size(); index++) {

            int num = reverseList.get(index);

            // 非前导0,才保留

            if (num != 0) {

                firstNotZeroIndex = index;

                break;

            }

        }

        if (firstNotZeroIndex == -1) {

            return Arrays.asList(0);

        }

        List list = reverseList.subList(firstNotZeroIndex, reverseList.size());

        return list;

    }

}

package test.leecode.isNumber;

import org.junit.Assert;

import org.junit.Test;

import cn.fansunion.leecode.isNumber.ANumberAfterADoubleReversal;

public class ANumberAfterADoubleReversalTest {

    @Test

    public void test() {

        ANumberAfterADoubleReversal test = new ANumberAfterADoubleReversal();

        //one

        Assert.assertTrue(test.isSameAfterReversals(1));

        Assert.assertTrue(test.isSameAfterReversals(2));

        Assert.assertTrue(test.isSameAfterReversals(9));

        Assert.assertTrue(test.isSameAfterReversals(0));

        //two

        Assert.assertTrue(test.isSameAfterReversals(11));

        Assert.assertTrue(test.isSameAfterReversals(12));

        Assert.assertTrue(test.isSameAfterReversals(78));

        Assert.assertFalse(test.isSameAfterReversals(10));

        Assert.assertFalse(test.isSameAfterReversals(30));

        //three

        Assert.assertFalse(test.isSameAfterReversals(180));

        Assert.assertTrue(test.isSameAfterReversals(181));

        Assert.assertTrue(test.isSameAfterReversals(526));

        Assert.assertTrue(test.isSameAfterReversals(123));

        //four

        Assert.assertFalse(test.isSameAfterReversals(1800));

        Assert.assertTrue(test.isSameAfterReversals(1801));

        //

        Assert.assertTrue(test.isSameAfterReversals(180258941));

        Assert.assertFalse(test.isSameAfterReversals(180258940));

    }

     

    @Test

    public void test2() {

        ANumberAfterADoubleReversal test = new ANumberAfterADoubleReversal();

        //one

        Assert.assertTrue(test.isSameAfterReversals2(1801));

        Assert.assertTrue(test.isSameAfterReversals2(1));

        Assert.assertTrue(test.isSameAfterReversals2(2));

        Assert.assertTrue(test.isSameAfterReversals2(9));

        Assert.assertTrue(test.isSameAfterReversals2(0));

        //two

        Assert.assertTrue(test.isSameAfterReversals2(11));

        Assert.assertTrue(test.isSameAfterReversals2(12));

        Assert.assertTrue(test.isSameAfterReversals2(78));

        Assert.assertFalse(test.isSameAfterReversals2(10));

        Assert.assertFalse(test.isSameAfterReversals2(30));

        //three

        Assert.assertFalse(test.isSameAfterReversals2(180));

        Assert.assertTrue(test.isSameAfterReversals2(181));

        Assert.assertTrue(test.isSameAfterReversals2(526));

        Assert.assertTrue(test.isSameAfterReversals2(123));

        //four

        Assert.assertFalse(test.isSameAfterReversals2(1800));

       

        //

        Assert.assertTrue(test.isSameAfterReversals2(180258941));

        Assert.assertFalse(test.isSameAfterReversals2(180258940));

    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号