题解 | #牛牛组数#

牛牛组数

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
全部评论

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务