题解 | #牛牛组数#

牛牛组数

http://www.nowcoder.com/questionTerminal/d4087657d86242169d2ed807d0d1410e

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 返回最大和的字符串
 * @param x string字符串 即题目描述中所给字符串
 * @param k int整型 即题目描述中所给的k
 * @return string字符串
 */
func Maxsumforknumers(x string, k int) string {
	// write code here
	vec := make([]int, 10)
	for i := 0; i < len(x); i++ {
		vec[x[i]-'0'] += 1
	}
	sumb := 0
	j := 0
	for k > 1 {
		if vec[j] > 0 {
			vec[j]--
			k--
			sumb += j
		} else {
            j++
        }
	}
    sumA := getSumA(vec)
    getSum(sumA, sumb)
    if sumA[0] == '0' {
        sumA = sumA[1:]
    }
    return string(sumA)
}
func getSumA(vec []int) []byte {
    str := make([]byte, 1)
    str[0] = '0'
    var j uint8
    j = 9
    for j < 10 {
        for vec[j] > 0 {
            str = append(str, j + '0')
            vec[j]--
        }
        j--
    }
    return str
}
func getSum(sumA []byte, sumb int) {
    k, left := len(sumA) - 1, 0
    for  sumb > 0 || left > 0 {
        tmp := sumA[k]
        sumA[k] = uint8((int(sumA[k] - '0') + (sumb % 10) + left) % 10) + '0'
        left = (int(tmp - '0') + (sumb % 10) + left) / 10
        k--
        sumb /= 10
    }
}

golang

全部评论

相关推荐

程序员牛肉:小牛肉来也! 基本破不了局了,我给你的建议是适当放弃秋招,投递大厂的日常实习之后赶明年的春招。 在没有实习的情况下,你的项目经历给面试官的作用就是提供提问点方便面试官来提问八股以及场景题而已。因此你现在简历的写法不太对,要着重突出项目中使用的技术点,而不是像你现在这个写的很宽泛。 最好是“基于xxxx技术解决了xxxx问题,解决了xxxx边缘场景问题”。最好是这样写,方便面试官对你的简历进行提问。 最后的最后,问题其实不在你。今年的秋招确实比较寒冬一点,所以找不到是正常的。要做好打持久战的准备。
Java学习交流
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务