假设我们有一个由小写字母和另一个整数“ j”组成的字符串“ i”。我们必须找出有多少个字符串,这些字符串等于'i'的大小,并且在字典上小于或等于'i'并且没有连续的等于'j'的相等字符。
必须通过找到Mod的结果乘以10 ^ 9 + 7来计算答案。
因此,如果输入像i =“ app”,j = 2,则输出将为405。
让我们看下面的实现以更好地理解-
class Solution:
def solve(self, s, k):
if k <= 0:
return 0
MOD = 10 ** 9 + 7
n = len(s)
nums = [ord(char) - ord("a") for char in s]
def dp(pos, bound, last, count):
if count > k:
return 0
if pos == n:
return 1
num = nums[pos]
res = 0
for i in range(num + 1 if bound else 26):
res += dp(pos + 1, bound and i == num, i, count * (i == last) + 1)
return res
return dp(0, True, -1, 0) % MOD
ob = Solution()
print(ob.solve('app',2))i = "app" j = 2输出结果
405