假设我们有一个由小写字母和另一个整数“ 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