用 Python 中的语法规则计算字符串数量的程序

pythonserver side programmingprogramming更新于 2026/1/15 0:44:17

假设我们有一个数字 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

    • 对于 _,范围从 0 到 n-1,执行

      • a := e+i+u

      • e := a+i

      • i := e+o

      • o := i

      • u := i+o

  • 返回 (a + e + i + o + u) mod m

让我们看看下面的实现以便更好地理解 −

示例

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

相关文章


有用资源