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

파이썬의 버디 문자열

<시간/>

소문자로 된 두 개의 문자열 A와 B가 있다고 가정합니다. 결과가 B와 같도록 A에서 두 글자를 바꿀 수 있는지 확인해야 합니다.

따라서 입력이 A ="ba", B ="ab"와 같으면 출력은 True가 됩니다.

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

  • A의 크기가 B의 크기와 같지 않으면
    • 거짓을 반환
  • 그렇지 않고 A와 B에 공통적이지 않은 요소가 있으면
    • 거짓을 반환
  • 그렇지 않고 A가 B와 동일하고 A에서 모든 문자가 구별되는 경우
    • 거짓을 반환
  • 그렇지 않으면
    • 개수:=0
  • 0~A 크기 범위의 i에 대해
    • A[i]가 B[i]와 같지 않으면
      • 카운트 :=카운트 + 1
      • 카운트가 3과 같으면
        • 거짓을 반환
  • 참 반환

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

예시

class Solution:
   def buddyStrings(self, A, B):
      if len(A)!=len(B):
         return False
      elif sorted(A)!=sorted(B):
         return False
      elif A==B and len(set(A))==len(A):
         return False
      else:
         count=0
         for i in range(len(A)):
            if A[i]!=B[i]:
               count+=1
               if count==3:
                  return False
         return True
ob = Solution()
print(ob.buddyStrings("ba","ab"))

입력

"ba","ab"

출력

True