#字符串匹配
class Solution(object):
def countSeniors(self, details):
"""
:type details: List[str]
:rtype: int
"""
ans = 0
for person in details:
if int(person[11:13]) > 60:
ans+=1
return ans
10.24(程序员节)
#动态规划
class Solution(object):
def numRollsToTarget(self, n, k, target):
"""
:type n: int
:type k: int
:type target: int
:rtype: int
"""
# mod = 10**9 + 7
# f = [[0] * (target + 1) for _ in range(n + 1)]
# f[0][0] = 1
# for i in range(1, n + 1):
# for j in range(i,target + 1):
# for x in range(1, k + 1):
# if j - x >= 0:
# f[i][j] = (f[i][j] + f[i - 1][j - x]) % mod
# return f[n][target]
mod = 10**9 + 7
f = [1] + [0] * target
#挨个拿n个骰子
for i in range(1, n + 1):
g = [0] * (target + 1)
for j in range(i,target + 1):
for x in range(1, k + 1):
if j - x >= 0:
g[j] = (g[j] + f[j - x]) % mod
f = g
return f[target]
10.25
#回溯 难
class Solution(object):
def punishmentNumber(self, n):
"""
:type n: int
:rtype: int
"""
def dfs(s, pos, tot, target):
if pos == len(s):
return tot == target
sum = 0
for i in range(pos, len(s)):
sum = sum * 10 + int(s[i])
if sum + tot > target:
break
if dfs(s, i + 1, sum + tot, target):
return True
return False
res = 0
for i in range(1, n + 1):
if dfs(str(i * i), 0, 0, i):
res += i * i
return res
10.26
from collections import Counter
class Solution(object):
def countDigits(self, num):
"""
:type num: int
:rtype: int
"""
ans = 0
tmp = dict(Counter(str(num)))
for k,v in tmp.items():
if num % int(k) == 0:
ans += v
return ans