【Pyhon刷题】顺子日期

【Pyhon刷题】顺子日期_第1张图片

【Pyhon刷题】顺子日期_第2张图片

思路

这道题的思想是枚举,我们只要列出全部的日期字符串然后逐一遍历判断就能得到结果了。

由题意可知组成一个顺子至少要3个数,所以只需要在日期字符串中三个一组来判断是否是顺子,如果找到一个顺子就给累加器ans加1然后break,继续判断下一个日期。题目中固定了是2022年,如果想要顺子出现在2022后面是不可能的,因为能在这组成的日期只有202234xx,显然可以排除,所以所需要的日期字符串就不用加上2022了。这样一来,每个日期字符串最多只需要判断2次,即前三个数和后三个数。在日期字符串里,只有一位数的月份或日期前需要补0,我们可以使用f"{num:02}"的办法实现。

代码

days = [0,31,28,31,30,31,30,31,31,30,31,30,31]
#把每个月的日期例举出来从而索引对应月份,所以第一个元素放一个0来补位
ans = 0#统计顺子日期个数
for m in range(1,13):#遍历月
    mm = f"{m:02}"
    for d in range(1,days[m]+1):#遍历日
        dd = f"{d:02}"
        s = mm + dd#连接月和日
        for i in range(2):#判断是否有顺子
            if int(s[i]) + 1 == int(s[i+1]) and int(s[i]) + 2 == int(s[i+2]):
                ans += 1
                break
print(ans)

        
    

你可能感兴趣的:(算法,python)