假设我们有一个带有“ 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