题解 | #牛牛组数#
牛牛组数
http://www.nowcoder.com/practice/d4087657d86242169d2ed807d0d1410e
首先容易得知,和最大的k个数一定是k-1个1位数和1个n-k+1位数,且输入的x中的n个数字应如下分布:k个最小的数字填充到k个数的个位,其他数字从小到大依次填充到十位往上,构成最后的n-k+1位数。由于输入的数字只能是1到9,可以不用对x中数字排序,而是直接查找x中有多少个i(i=1,...,9),再从1到9顺序填充k个数,在这个过程中逐步计算结果就可以了。
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # 返回最大和的字符串 # @param x string字符串 即题目描述中所给字符串 # @param k int整型 即题目描述中所给的k # @return string字符串 # class Solution: def Maxsumforknumers(self , x , k ): # write code here index=0 ans=0 flag=True for number in range(1,10): count=x.count(str(number)) if count==0: continue if flag: index+=count if index>=k: index=index-k+1 count=count-index ans+=int(str(number)*index) flag=False ans+=number*count else: ans+=int(str(number)*count)*10**index index+=count return ans