列表

详情


1323. 6 和 9 组成的最大数字

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

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

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

 

示例 1:

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

示例 2:

输入:num = 9996
输出:9999
解释:将最后一位从 6 变到 9,其结果 9999 是最大的数。

示例 3:

输入:num = 9999
输出:9999
解释:无需改变就已经是最大的数字了。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int maximum69Number (int num) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-10 12:41:39

func maximum69Number (num int) int {
	// 把最高位的6换成9即可
	s := strings.Split(strconv.Itoa(num), "")
    for i := 0; i < len(s); i++ {
        if s[i] == "6" {
            s[i] = "9"
            break
        }
    }
	ans, _ := strconv.Atoi(strings.Join(s, ""))
    return ans
}

golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-06-10 12:38:31

func maximum69Number (num int) int {
	// 把最高位的6换成9即可
	s := strconv.Itoa(num)
	ans := 0
	six := 0
	for i := 0; i < len(s); i++ {
		if six == 0 || s[i] == '9' {
			if s[i] == '6' {
				six++
			}
			ans = ans * 10 + 9
		} else {
			ans = ans * 10 + int(s[i]-48)
		}
	}
	return ans
}

上一题