สมมติว่าเรามีสตริง 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 ทำ
-
นับ :=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