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

Python에서 두 개의 개별 요소가 있는 가장 긴 부분 문자열의 길이를 찾는 프로그램

<시간/>

문자열 s가 있다고 가정하고 최대 2개의 고유한 문자를 포함하는 가장 긴 부분 문자열의 길이를 찾아야 합니다.

따라서 입력이 s ="xyzzy"와 같으면 출력은 4가 됩니다. "yzzy"는 최대 2개의 고유 문자가 있는 가장 긴 부분 문자열이기 때문입니다.

이 문제를 해결하기 위해 다음 단계를 따르겠습니다-

  • 시작 :=0

  • c :=지도

  • 답변 :=0

  • 범위 0에서 s까지의 끝을 위해

    • c[s[end]] :=c[s[end]] + 1

    • c> 2인 동안 수행

      • c[s[시작]] :=c[s[시작]] - 1


      • c[s[start]]가 0이면

        • 삭제 c[s[start]]

      • 시작 :=시작 + 1

    • ans :=ans의 최대값 및 (end - start + 1)

  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, s):
      from collections import Counter
      start = 0
      c = Counter()
      ans = 0
      for end in range(len(s)):
         c[s[end]] += 1
         while len(c) > 2:
            c[s[start]] -= 1
            if not c[s[start]]:
               del c[s[start]]
            start += 1
         ans = max(ans, end - start + 1)
      return ans
ob = Solution()
s = "xyzzy"
print(ob.solve(s))

입력

s = "xyzzy"

출력

4