假设我们有两个数字num和k,我们必须找到num中k个连续数字的最大乘积。我们必须牢记,num必须保证> = k个数字。
因此,如果输入类似于num = 52689762和k = 4,则输出将为3024,连续4位数字的最大乘积为(8 * 9 * 7 * 6)= 3024。
为了解决这个问题,我们将遵循以下步骤-
最大:= 0
坎德:= 1
而(num / 10的商)^(k-1)> 0,
坎德:=坎德*(数字mod 10)
如果cand与0相同,则
数字:=数字的商/ 10
从循环中出来
位数:=(数字的最后一位)^ k
坎德:= 1
当数字> 0时,执行
最大:=最大和最大
num:= nums / 10的商
返回最大
让我们看下面的实现以更好地理解-
class Solution: def solve(self, num, k): largest = 0 while num // 10 ** (k - 1) > 0: digits = num % 10 ** k cand = 1 while digits > 0: cand *= digits % 10 if cand == 0: break digits //= 10 largest = max(largest, cand) num //= 10 return largest ob = Solution()num = 52689762 k = 4 print(ob.solve(num,k))
52689762, 4
输出结果
3024