สมมติว่าเรามีสตริง 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