Numbers With Repeated Digits LeetCode solution in Python
1class Solution:2def numDupDigitsAtMostN(self, n: int) -> int:34nums = [int(i) for i in str(n + 1)] # digits in n+15d = len(nums) # number of digits in n+16res = 0 # number of no duplicates78# count no duplicates for numbers with <d digits9for i in range(1, d):10res += 9 * math.perm(9, i - 1)1112# count no duplicates for numbers with d digits and smaller than n13for i, x in enumerate(nums):14if i == 0:15digit_range = range(1, x) # first digit can not be 016else:17digit_range = range(x)1819for y in digit_range:20if y not in nums[:i]:21res += math.perm(9 - i, d - 1 - i)22if x in nums[:i]:23break2425return n - res