方法一,str(i).count("1")
import time
start = time.time()
#解题思路:拼数字的话1的卡片肯是用的最快的
num=0
for i in range(1,10000):
num+=str(i).count("1") #计算字符串i中,字符1出现的次数。
if 2021 == num:
print(i)
break
end = time.time()
print(end - start) #所用时间为2ms左右
方法二,通过创建一维10个元素的列表,判断列表中的每个数字那个累加到2021
import time
start = time.time()
arr = [0 for _ in range(10)] #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print(arr)
i = 1
while(i):
string = str(i)
# print(string)
for j in string:
arr[int(j)] += 1
for j in range(9):
if arr[j] == 2021:
print(i)
i = 0 #找到目标数字后令i=0,准备跳出循环
break
if i == 0: break #目的跳出整个while循环
else:i += 1
end = time.time()
print(end - start) #0.017952919006347656
重点:学会使用str.count(“1”)方法。链接:https://blog.csdn.net/tcattime/category_8763002.html
string.count(sub_string, start, end)