插入后的最大值 Go语言

11 篇文章 0 订阅
5 篇文章 0 订阅
插入后的最大值
  • 题目:给你一个非常大的整数 n 和一个整数数字 x ,大整数 n 用一个字符串表示。n 中每一位数字和数字 x 都处于闭区间 [1, 9] 中,且 n 可能表示一个负数 。

  • 你打算通过在 n 的十进制表示的任意位置插入 x 来 最大化 n 的数值 ​​​​​​。但不能在负号的左边插入 x

  • 例如,如果 n = 73x = 6 ,那么最佳方案是将 6 插入 73 之间,使 n = 763

  • 如果 n = -55x = 2 ,那么最佳方案是将 2 插在第一个 5 之前,使 n = -255

  • 返回插入操作后,用字符串表示的 n 的最大值。

// 当 n 为正数时,插入位置左边的数都 >=x
// 当 n 为负数时,插入位置左边的数都 <=x
func maxValue(n string, x int) string {
	m := byte('0' + x)
	i := 0
	if n[0] != '-' {
		for ; i < len(n) && n[i] >= m; i++ {
		}
	} else {
		for i = 1; i < len(n) && n[i] <= m; i++ {
		}
	}
	return n[:i] + strconv.Itoa(x) + n[i:]
}
  • 我先开始在思考时想把 n 转化成 int64 进行比较,但是会超出范围,而且就算可以通过,也会造成时间浪费。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值