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);
|