Python程序:根据给定字符串序列规则查找第n个序列


假设我们有两个字符串s、t,还有一个给定的正数n,我们需要找到序列A的第n项,其中:

  • A[0] = s
  • A[1] = t
  • 当n为偶数时,A[n] = A[n - 1] + A[n - 2];否则,A[n] = A[n - 2] + A[n - 1]。

例如,如果s = "a",t = "b",则序列A将是:["a", "b", "ba" ("a" + "b"), "bba" ("b" + "ba"), "bbaba" ("bba" + "ba")]

因此,如果输入为s = "pk",t = "r",n = 4,则输出将为"rrpkrpk"

为了解决这个问题,我们将遵循以下步骤:

  • 如果n等于0,则
    • 返回s
  • 否则,如果n等于1,则
    • 返回t
  • a := s,b := t
  • 对于范围从2到n的i,执行:
    • 如果i mod 2等于0,则
      • c := b连接a
    • 否则,
      • c := a连接b
    • a := b
    • b := c
  • 返回c

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

示例

 在线演示

class Solution:
   def solve(self, s, t, n):
      if n == 0:
         return s
      elif n == 1:
         return t
         a = s
         b = t
      for i in range(2, n+1):
         if i%2 == 0:
            c = b + a
         else:
            c = a + b
            a = b
            b = c
      return c
ob = Solution()
print(ob.solve("pk", "r", 4))

输入

"pk", "r", 4

输出

rrpkrpk

更新于:2020年10月5日

235 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.