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 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告