程序在Python中查找具有i,j和k的x,y,z字母个数的子序列数

假设我们有一个带有“ x”,“ y”和“ z”的字符串s,我们必须找到具有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,执行

    • z:= z * 2

    • z:= z + y

    • y:= y * 2

    • y:= y + x

    • x:= x * 2

    • x:= x + 1

    • 计数:= 0

    • 如果s [i]与“ x”相同,则

    • 如果s [i]与“ y”相同,则

    • 如果s [i]与“ z”相同,则

    • 返回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