0
点赞
收藏
分享

微信扫一扫

3589、6 和 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 。


链接: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));

}

}

举报

相关推荐

0 条评论