import Foundation
func areIsomorphic(_ s: String, _ t: String) -> Bool {
guard s.count == t.count else { return false }
var mapST: [Character: Character] = [:]
var mapTS: [Character: Character] = [:]
for (c1, c2) in zip(s, t) {
// Check mapping from s → t
if let mapped = mapST[c1] {
if mapped != c2 { return false }
} else {
mapST[c1] = c2
}
// Check mapping from t → s
if let mapped = mapTS[c2] {
if mapped != c1 { return false }
} else {
mapTS[c2] = c1
}
}
return true
}
print(areIsomorphic("egg", "add"))
print(areIsomorphic("foo", "bar"))
print(areIsomorphic("paper", "title"))
/*
run:
true
false
true
*/