Python程序:查找包含i个x、j个y和k个z字符的子序列个数


假设我们有一个字符串s,其中包含“x”、“y”和“z”,我们需要找到有多少个子序列包含i个“x”字符,后面跟着j个“y”字符,再后面跟着k个“z”字符,其中i、j、k ≥ 1。

例如,如果输入是s = "xxyz",则输出为3,因为我们可以构成两个"xyz"和一个"xxyz"。

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

  • n := s的长度

  • x := 0, y := 0, z := 0

  • 对于范围0到n的i,执行:

    • count := 0

    • 如果s[i]等于“x”,则:

      • x := x * 2

      • x := x + 1

    • 如果s[i]等于“y”,则:

      • y := y * 2

      • y := y + x

    • 如果s[i]等于“z”,则:

      • z := z * 2

      • z := z + y

  • 返回z

示例

 在线演示

class Solution:
   def solve(self, s):
      n = len(s)

      x = 0
      y = 0
      z = 0
      for i in range(n):
         count = 0
         if s[i] == "x":
            x *= 2
            x += 1
         if s[i] == "y":
            y *= 2
            y += x
         if s[i] == "z":
            z *= 2
            z += y

      return z

ob = Solution()
print(ob.solve("xxyz"))

输入

"xxyz"

输出

3

更新于:2020年11月9日

152 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告