2706 和 9 组成的最大数字

Posted huoyingfans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2706 和 9 组成的最大数字相关的知识,希望对你有一定的参考价值。

给你一个仅由数字 6 和 9 组成的正整数 num。

你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 

请返回你可以得到的最大数字。

  

示例 1

输入:num = 9669

输出:9969

解释:

改变第一位数字可以得到 6669 

改变第二位数字可以得到 9969 

改变第三位数字可以得到 9699 

改变第四位数字可以得到 9666 

其中最大的数字是 9969 

示例 2

输入:num = 9996

输出:9999

解释:将最后一位从 6 变到 9,其结果 9999 是最大的数。

示例 3

输入:num = 9999

输出:9999

解释:无需改变就已经是最大的数字了。

  

提示:

1 <= num <= 10^4

num 每一位上的数字都是 6 或者 9 

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/maximum-69-number

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

package cn.fansunion.leecode.isNumber;

import java.util.ArrayList;

import java.util.List;

import cn.fansunion.leecode.kit.Kit;

/**

 * 1323. 6 和 9 组成的最大数字<br/>

 * 给你一个仅由数字 6 和 9 组成的正整数 num。<br/>

 *

 * 你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。<br/>

 *

 * 请返回你可以得到的最大数字。<br/>

 力扣

 *

 * @author wen.lei@brgroup.com

 *

 *         2022-2-19

 */

public class Maximum69Number

    /*示例 1:

     

    输入:num = 9669

    输出:9969

    解释:

    改变第一位数字可以得到 6669 。

    改变第二位数字可以得到 9969 。

    改变第三位数字可以得到 9699 。

    改变第四位数字可以得到 9666 。

    其中最大的数字是 9969 。

    示例 2:

     

    输入:num = 9996

    输出:9999

    解释:将最后一位从 6 变到 9,其结果 9999 是最大的数。

    示例 3:

     

    输入:num = 9999

    输出:9999

    解释:无需改变就已经是最大的数字了。

      

     

    提示:

     

    1 <= num <= 10^4

    num 每一位上的数字都是 6 或者 9 。*/

    /**

     * 题目核心意思:把出现在最高位的6换成9,如果有的话

     *

     * @param num

     * @return

     */

    public int maximum69Number(int num)

        //leecode很多题目,都可以用到最常用的工具类。实际在leecode执行,需要把它们作为类的private方法

        List<Integer> digitList = Kit.intToDigitList(num);

        List<Integer> newDigitList = new ArrayList<>();

        boolean flag = false;

        for (Integer digit : digitList)

            if (digit.equals(6) && !flag)

                newDigitList.add(9);

                flag = true;

             else 

                newDigitList.add(digit);

            

        

        return Kit.digitListToInt(newDigitList);

    

     

    //int->str,从0到length-1,把第1个6转换成9

    public int maximum69Number2(int num)

        String s = String.valueOf(num);

        s = s.replaceFirst("6","9");

       return Integer.parseInt(s);

    

package test.leecode.isNumber;

import org.junit.Assert;

import org.junit.Test;

import cn.fansunion.leecode.isNumber.Maximum69Number;

/**

 * @author wen.lei@brgroup.com

 *

 *         2022-2-25

 */

public class Maximum69NumberTest

    @Test

    public void test()

        Maximum69Number test = new Maximum69Number();

        Assert.assertEquals(9969, test.maximum69Number(9669));

        Assert.assertEquals(9999, test.maximum69Number(9996));

        Assert.assertEquals(9999, test.maximum69Number(9999));

    

     

    @Test

    public void test2()

        Maximum69Number test = new Maximum69Number();

        Assert.assertEquals(9969, test.maximum69Number2(9669));

        Assert.assertEquals(9999, test.maximum69Number2(9996));

        Assert.assertEquals(9999, test.maximum69Number2(9999));

    

以上是关于2706 和 9 组成的最大数字的主要内容,如果未能解决你的问题,请参考以下文章

2706 和 9 组成的最大数字

35896 和 9 组成的最大数字

35896 和 9 组成的最大数字

LeetCode1323. 6 和 9 组成的最大数字(C++)

LeetCode1323. 6 和 9 组成的最大数字(C++)

每周一题:6和9组成的最大数字(已更新JS)