Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 x, y, z 문자의 i, j 및 k 수로 부분 시퀀스 수를 찾는 프로그램

<시간/>

"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