题目
给你一个仅由数字 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)
结语
此题比较简单 需要掌握处理的核心 和字符串和整数的切换即可