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

파이썬에서 한 문자열이 다른 문자열에 1:1로 매핑될 수 있는지 확인하는 프로그램

<시간/>

두 개의 소문자 문자열 s가 있고 t는 s가 t에 매핑될 수 있도록 s의 각 문자에 대해 다른 문자(동일한 문자일 수 있음)에 대한 하나의 1:1 매핑을 생성할 수 있는지 확인해야 한다고 가정합니다. (캐릭터의 순서는 변경되지 않습니다.)

따라서 입력이 s ="papa", t ="lili"와 같으면 "p"에서 "l", "a" -> "i"로 매핑을 생성할 수 있으므로 출력은 True가 됩니다. /P>

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

  • s_dict :=새 지도
  • t_dict :=새 지도
  • 0에서 s 크기 및 t 크기의 최소 범위에 있는 i에 대해 다음을 수행합니다.
    • s[i]가 s_dict에 있으면
      • s_dict[s[i]]가 t[i]와 같지 않으면
        • 거짓을 반환
    • 그렇지 않으면 t[i]가 t_dict에 있으면
      • t_dict[t[i]]가 s[i]와 같지 않으면
        • 거짓을 반환
    • 그렇지 않으면
      • s_dict[s[i]] :=t[i]
      • t_dict[t[i]] :=s[i]
  • 참 반환

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

class Solution:
   def solve(self, s, t):
      s_dict = {}
      t_dict = {}
      for i in range(min(len(s), len(t))):
         if s[i] in s_dict:
            if s_dict[s[i]] != t[i]:
               return False
            elif t[i] in t_dict:
               if t_dict[t[i]] != s[i]:
                  return False
               else:
                  s_dict[s[i]] = t[i]
                  t_dict[t[i]] = s[i]
      return True
ob = Solution()
print(ob.solve("papa", "lili"))

입력

"papa", "lili"

출력

True