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

Python에서 B보다 먼저 A를 만들기 위해 삭제할 최소 문자 수를 찾는 프로그램

<시간/>

두 개의 문자 A와 B로 구성된 문자열 s가 있다고 가정하고 Bs가 모두 발생하기 전에 As가 모두 발생하도록 하려면 s에서 삭제해야 하는 최소 문자 수를 찾아야 합니다.

따라서 입력이 S ="AABABAB"와 같으면 출력은 1이 됩니다. AABBB를 얻기 위해 마지막 A를 제거할 수 있기 때문입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • a_right :=s에서 "A"가 발생한 횟수

  • b_left :=0

  • as :=a_right

  • s의 각 인덱스 i와 문자 c에 대해

    • c가 "A"와 같으면

      • a_right :=a_right - 1

    • 그렇지 않으면

      • b_left :=b_left + 1

    • ans :=ans 및 a_right + b_left의 최소값

  • 반환

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

class Solution:
   def solve(self, s):
      a_right = s.count("A")
      b_left = 0

      ans = a_right
      for i, c in enumerate(s):
         if c == "A":
            a_right -= 1
         else:
            b_left += 1
         ans = min(ans, a_right + b_left)
      return ans

ob = Solution()
S = "AABAABB"
print(ob.solve(S))

입력

"AABAABB"

출력

1