题目描述
给定正整数 n,返回在 [1, n] 范围内具有 至少 1 位 重复数字的正整数的个数。
示例 1:
输入:n = 20
输出:1
解释:具有至少 1 位重复数字的正数(<= 20)只有 11 。
示例 2:
输入:n = 100
输出:10
解释:具有至少 1 位重复数字的正数(<= 100)有 11,22,33,44,55,66,77,88,99 和 100 。
示例 3:
输入:n = 1000
输出:262
题解
通过将数字转成字符串,然后判断字符串中是否有两个相同字符。有就计数。
不过该解法在n比较大的情况下会超时。
code
def numDupDigitsAtMostN(self, n: int) -> int:
def is_ss(n):
stt = str(n)
m = len(stt)
sss = list(set(stt))
if m > len(sss):
return True
else:
return False
sum = 0
for i in range(1,n+1):
if is_ss(i) is True:
sum +=1
return sum