该程序计算我们可以在Python中使用语法规则制作的字符串数
假设我们有一个数字n,我们必须找到可以使用以下规则生成的长度为n的字符串数-
每个字符都是小写的元音[a,e,i,o,u]
“a”后面只能跟一个“e”
“e”后面只能加上“a”和“i”中的任何一个
“i”后面不能跟另一个“i”
“o”后面只能加上“i”和“u”中的任何一个
“u”后面只能跟一个“a”
如果结果很大,则将结果修改为10^9+7。
因此,如果输入类似n=2,则输出将为10,因为我们可以生成以下两个字母字符串:[“ae”,“ea”,“ei”,“ia”,“ie”,“io”,“iu”,“oi”,“ou”,“ua”]
为了解决这个问题,我们将遵循以下步骤-
m=10^9+7
如果n等于0,则
返回0
定义五个变量a,e,i,o,u,最初均为1
一个:=e+i+u
e:=a+i
我:=e+o
o:=我
你:=i+o
对于_在0到n-1的范围内,执行
返回(a+e+i+o+u)modm
让我们看下面的实现以更好地理解-
示例
class Solution: def solve(self, n): m = (10 ** 9 + 7) if n == 0: return 0 a = e = i = o = u = 1 for _ in range(n-1): a, e, i, o, u = e+i+u, a+i, e+o, i, i+o return (a + e + i + o + u) % m ob = Solution()print(ob.solve(3))
输入值
3
输出结果
19