给你一个仅由数字 6 和 9 组成的正整数 num。
你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。
请返回你可以得到的最大数字。
方法一:转化为int数组,再转回去
时空复杂度:O(N)
class Solution {
public int maximum69Number (int num) {
String str = String.valueOf(num);
int[] res = new int[str.length()];
for (int i = 0; i < str.length(); i++){
res[i] = Integer.parseInt(String.valueOf(str.charAt(i)));
}
for (int i = 0; i < res.length; i++) {
if (res[i] == 6){
res[i] = 9;
break;
}
}
int result = 0;
for (int i = 0; i < res.length; i++) {
result += res[i] * Math.pow(10, res.length - i - 1);
}
return result;
}
}
方法二:使用java的内部方法
此方法运行时间较长
class Solution {
public int maximum69Number (int num) {
String str = String.valueOf(num);
return Integer.parseInt(str.replaceFirst("6", "9"));
}
}
方法三:对每一位进行条件判断
时空复杂度O(1)
class Solution {
public int maximum69Number (int num) {
if(num / 1000 == 6) return num + 3000;
if((num/100) % 10 == 6) return num +300;
if((num%100) / 10 == 6) return num + 30;
if(num % 10 == 6) return num + 3;
return num;
}
}