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

Python에서 하나의 문자열 하위 문자열을 다른 문자열로 만드는 데 필요한 최소 작업 수를 찾는 프로그램

<시간/>

두 개의 문자열 s와 t가 있다고 가정하면 s가 s의 하위 문자열을 만드는 데 필요한 최소 연산량을 찾아야 합니다. 이제 각 작업에서 s의 임의의 위치를 ​​선택하고 해당 위치의 문자를 다른 문자로 변경할 수 있습니다.

따라서 입력이 s ="abbpqr", t ="bbxy"와 같으면 하위 문자열 "bbpq"를 가져와서 'p'를 'x'로, 'q'를 '로 변경할 수 있으므로 출력은 2가 됩니다. 요'.

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

  • k :=t의 크기, n :=s의 크기
  • ans :=10^10
  • 0 ~ n - k 범위의 i에 대해
    • ss :=s의 부분 문자열[인덱스 i에서 i+k-1까지]
    • ans :=s 및 t의 일치하지 않는 문자 수 및 최소 ans
  • 반환

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

예시

class Solution:
   def solve(self, s, t):
      k, n = len(t), len(s)
      ans = 10**10
      for i in range(n - k + 1):
         ss = s[i:i+k]
         ans = min(ans, sum(ss[j]!=t[j] for j in range(k)))
      return ans
ob = Solution()
print(ob.solve("abbpqr", "bbxy"))

입력

"abbpqr", "bbxy"

출력

2