예 1 :
입력 : s = "egg", t = "add"
출력 : true
예 2 :
입력 : s = "foo", t = "bar"
출력 : false
예 3 :
입력 : s = "paper", t = "title"
출력 : true
질문에서 s와 t의 기본 길이가 같으
므로 s와 t의 길이가 같은지 판단 할 필요가 없습니다.
1. 단순 인덱스 탐색 첫
번째는 가장 간단한 인덱스 함수 방법입니다.
문자가 반복되면 index는 기본적으로 처음 찾은 값을 반환합니다.
s
에서 반복 되지만 t에서 반복되지 않으면 반복 된 값을 탐색 할 때 :
반복 된 값에 대해 반복 된
값을 반환 합니다. 첫 번째 숫자의 인덱스를 반환하지만 t가 반복되지 않으면 반환 된 인덱스 값이 다릅니다.
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
for i in range(0, len(s)):
if s.index(s[i]) != t.index(t[i]):
return False
return True
둘째, 해시 테이블
해시 테이블을 사용하여 쓰기에 확실히 골칫거리이지만, 크게, 시간 복잡성을 줄이고 운영 효율성을 향상시킬 수있는
키 문자로 최초의 문자 값 t에 매핑되는되는
문자의 완전히 교체해야하기 때문
에 추가하기 때문에 s에있는 문자가 t에있는 문자에
매핑되는지 여부를 판단합니다 . 마지막으로 해시 테이블에있는 s의 매핑 값이 t에있는 해당 값과 동일한 지 (유일한 지)
판단합니다. s에 해당하는 매핑이 다른 경우 ( 고유하지 않음), False 반환
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
hash_map = {
}
for i in range(len(s)):
if s[i] not in hash_map:
if t[i] in hash_map.values():
return False
else:
hash_map[s[i]] = t[i]
else:
if hash_map[s[i]] != t[i]:
return False
return True