diff --git a/java/205-Isomorphic-Strings.java b/java/205-Isomorphic-Strings.java new file mode 100644 index 000000000..74ad778b0 --- /dev/null +++ b/java/205-Isomorphic-Strings.java @@ -0,0 +1,29 @@ +class Solution { + public boolean isIsomorphic(String s, String t) { + // Needs bidirectional mapping from s <--> t + if(s.length() != t.length()) { + return false; + } + + Map mapSourceToDest = new HashMap<>(); + Map mapDestToSource = new HashMap<>(); + + int len = s.length(); + for(int i=0; i Bool { + guard s.count == t.count else { return false } + + var mapSourceToDest: [Character: Character] = [:] + var mapDestToSource: [Character: Character] = [:] + + for (sourceChar, destChar) in zip(s, t) { + if let sourceMapped = mapSourceToDest[sourceChar] { + guard sourceMapped == destChar else { return false } + } else { + mapSourceToDest[sourceChar] = destChar + } + + if let destMapped = mapDestToSource[destChar] { + guard destMapped == sourceChar else { return false } + } else { + mapDestToSource[destChar] = sourceChar + } + } + + return true + } +} \ No newline at end of file