6 和 9 组成的最大数字
难度:
标签:
题目描述
代码结果
运行时间: 20 ms, 内存: 16.0 MB
/*
* 思路:
* 1. 将数字转换为字符串,方便逐位处理。
* 2. 使用Java Stream操作,找到第一个 '6' 并将其替换为 '9'。
* 3. 将修改后的字符串转换回整数并返回。
*/
import java.util.stream.Collectors;
public class Solution {
public int maximum69Number(int num) {
// 将数字转换为字符串
String numStr = String.valueOf(num);
// 使用Stream替换第一个 '6' 为 '9'
String result = numStr.chars()
.mapToObj(c -> (char) c)
.map(c -> c == '6' ? '9' : c)
.collect(StringBuilder::new, (sb, c) -> {
if (sb.indexOf("6") != -1) {
sb.append('9');
} else {
sb.append(c);
}
}, StringBuilder::append)
.toString();
// 将修改后的字符串转换回整数并返回
return Integer.parseInt(result);
}
}
解释
方法:
题解利用Python字符串的replace方法,将数字num转换为字符串,然后使用replace方法将第一个出现的字符'6'替换为'9'。这种方法直接寻找并替换第一个'6',确保得到的数字尽可能大。如果字符串中没有'6',则replace不会改变任何内容,直接返回原数字。
时间复杂度:
O(1)
空间复杂度:
O(1)
代码细节讲解
🦆
题解中提到使用replace方法只替换第一个出现的'6',请问如果一个数字中存在多个'6',为什么只替换第一个'6'就能确保得到最大的数字?
▷🦆
在题解中提到的replace方法,具体是怎样确定哪个'6'是第一个出现的?是否依赖于字符串从左到右的扫描顺序?
▷🦆
在实际应用中,如果num的范围增大到非常大的数字,比如超过10^9,题解中的方法是否还适用,或者需要考虑其他优化方案?
▷