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

Python에서 두 문자열이 가까운지 확인하는 프로그램

<시간/>

두 개의 문자열 s와 t가 있다고 가정하고 s와 t가 가까운지 여부를 확인해야 합니다. 다음 작업을 사용하여 다른 문자열에서 하나를 얻을 수 있으면 두 문자열이 가깝다고 말할 수 있습니다. -

  • 기존 캐릭터 2개를 교환하십시오. (예:abcde에서 aecdb로)

  • 하나의 기존 캐릭터가 나타날 때마다 다른 기존 캐릭터로 변경하고 다른 캐릭터에도 동일한 작업을 수행합니다. (예:aacabb -> bbcbaa(여기서 모든 a는 b로 변환되고 그 반대의 경우도 마찬가지입니다))

두 문자열에 대해 원하는 만큼 작업을 사용할 수 있습니다.

따라서 입력이 s ="zxyyyx", t ="xyyzzz"와 같으면 출력은 true가 됩니다. 왜냐하면 3번의 작업으로 s에서 t를 얻을 수 있기 때문입니다. ("zxyyyx" -> "zxxyyy"), ("zxxyyy" -> "yxxzzz") 및 ("yxxzzz" -> "xyyzzz").

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

  • s와 t에 특이한 문자가 있으면

    • 거짓을 반환

  • a :=s에 있는 문자의 모든 빈도 값 목록

  • b :=t에 있는 문자의 모든 빈도 값 목록

  • 목록 정렬 a

  • 목록 정렬 b

  • b와 같지 않으면

    • 거짓을 반환

  • 참을 반환

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

from collections import Counter
def solve(s, t):
   if set(s) != set(t):
      return False
   a = list(Counter(s).values())
   b = list(Counter(t).values())
   a.sort()
   b.sort()
   if a != b:
      return False
   return True

s = "zxyyyx"
t = "xyyzzz"
print(solve(s, t))

입력

"zxyyyx", "xyyzzz"

출력

True