数字翻转

算法

Posted by CH on May 28, 2020

题目

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

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

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

示例

输入num = 9669
输出9969
解释
改变第一位数字可以得到 6669 
改变第二位数字可以得到 9969 
改变第三位数字可以得到 9699 
改变第四位数字可以得到 9666 
其中最大的数字是 9969 

题干

仅由数字 6 和 9 组成的正整数 num

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

最大数字

思路

想要获得最大值将最高位的6转为9即可

如何将整数循环位数 可用字符串和字符数组解

循环数组解法

1.将整数转换为字符数组

2.循环数组 将字符转换为整数 若为6则将数组中的6转化为9 break循环

3.将字符数组还原为整数返回

解答

循环数组解法

class Solution {
 public static int maximum69Number (int num) {
        String numStr = String.valueOf(num);
        char[] arr = numStr.toCharArray();
        for(int i=0;i<arr.length;i++){
            char value = arr[i];
            int intValue = Integer.parseInt(String.valueOf(value));
            System.out.println(intValue);
            if(intValue == 6){
                arr[i] = '9';
                break;
            }
        }

        String result = String.valueOf(arr);
        System.out.println(result);
        return Integer.parseInt(result);
    }
}

时空复杂度分析

如果采用循环数组解法 时间复杂度为O(n) 空间复杂度为O(n)

结语

此题比较简单 需要掌握处理的核心 和字符串和整数的切换即可