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

Python에서 한 문자열을 다른 문자열로 변환할 수 있는지 확인

<시간/>

두 개의 문자열 s와 t가 있다고 가정합니다. t는 대문자입니다. 다음 연산을 수행하여 t로 변환할 수 있는지 확인해야 합니다.

  • 일부 소문자를 대문자로 변환합니다.
  • 소문자를 모두 제거합니다.

따라서 입력이 s ="fanToM", t ="TOM"과 같으면 'o'를 'O'로 변경한 다음 s에서 다른 모든 소문자를 제거하여 t로 만들 수 있으므로 출력은 True가 됩니다.

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

  • n :=s의 크기, m :=t의 크기
  • dp:=(m + 1)x(n + 1) 크기의 행렬이고 False로 채움
  • dp[0, 0] :=참
  • 0 ~ s - 1 크기 범위의 i에 대해
    • 0에서 t까지의 범위에 있는 j에 대해
      • dp[i, j]가 True이면
        • j
        • dp[i + 1, j + 1] :=참
      • s[i]가 대문자가 아니면
        • dp[i + 1, j] :=참
  • dp[n, m] 반환
  • 예시

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

    def solve(s,t):
       n = len(s)
       m = len(t)
       dp= [[False for i in range(m+1)] for i in range(n+1)]
       dp[0][0] = True
       for i in range(len(s)):
          for j in range(len(t)+1):
             if dp[i][j] == True:
                if j < len(t) and (s[i].upper() == t[j]):
                   dp[i + 1][j + 1] = True
                if s[i].isupper()==False:
                   dp[i + 1][j] = True
       return dp[n][m]
    s = "fanToM"
    t = "TOM"
    print(solve(s, t))

    입력

    "fanToM", "TOM"

    출력

    True