"x", "y" 및 "z"가 있는 문자열 s가 있다고 가정하면 i개의 "x" 문자, j개의 "y" 문자, 그 뒤에 오는 "y" 문자가 있는 부분 시퀀스의 수를 찾아야 합니다. k개의 "z" 문자 수, 여기서 i, j, k ≥ 1.
따라서 입력이 s ="xxyz"와 같으면 두 개의 "xyz"와 하나의 "xxyz"를 만들 수 있으므로 출력은 3이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다.
-
n :=s
의 크기 -
x :=0, y :=0, z :=0
-
0에서 n 사이의 i에 대해 수행
-
개수 :=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