From af048de87ea89a5d23d826bc89467b90dd51cbec Mon Sep 17 00:00:00 2001 From: JeevaRamanathan Date: Wed, 1 Oct 2025 00:00:29 +0000 Subject: [PATCH 1/3] added isomorphic strings Signed-off-by: JeevaRamanathan --- strings/is_isomorphic.py | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 strings/is_isomorphic.py diff --git a/strings/is_isomorphic.py b/strings/is_isomorphic.py new file mode 100644 index 000000000000..244f4cb17f87 --- /dev/null +++ b/strings/is_isomorphic.py @@ -0,0 +1,48 @@ +def is_isomorphic(s: str, t: str) -> bool: + """ + LeetCode No. 205 Isomorphic Strings + Given two strings s and t, determine if they are isomorphic. + https://leetcode.com/problems/isomorphic-strings/description/ + + Two strings s and t are isomorphic if the characters in s can be + replaced to get t. + + All occurrences of a character must be replaced with another character + while preserving the order of characters. No two characters may map to + the same character, but a character may map to itself. + + + >>> is_isomorphic("egg", "add") + True + >>> is_isomorphic("foo", "bar") + False + >>> is_isomorphic("paper", "title") + True + >>> is_isomorphic("ab", "aa") + False + """ + if len(s) != len(t): + return False + + mapping: dict[str, str] = {} + mapped = set() + + for char_s, char_t in zip(s, t): + if char_s in mapping: + if mapping[char_s] != char_t: + return False + else: + if char_t in mapped: + return False + mapping[char_s] = char_t + mapped.add(char_t) + + return True + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + + print(is_isomorphic("egg", "add")) # True From 634bf4ff5f4cde19b321aa39fc1379a91a6ed4e3 Mon Sep 17 00:00:00 2001 From: JeevaRamanathan Date: Wed, 1 Oct 2025 00:01:20 +0000 Subject: [PATCH 2/3] updating DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 36acb3b97f1e..02bf5282280c 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -1333,6 +1333,7 @@ * [Indian Phone Validator](strings/indian_phone_validator.py) * [Is Contains Unique Chars](strings/is_contains_unique_chars.py) * [Is Isogram](strings/is_isogram.py) + * [Is Isomorphic](strings/is_isomorphic.py) * [Is Pangram](strings/is_pangram.py) * [Is Polish National Id](strings/is_polish_national_id.py) * [Is Spain National Id](strings/is_spain_national_id.py) From 4049b24d67d31e7da0ee3f0b04457553cfb2834f Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Thu, 17 Sep 2026 12:55:18 +0200 Subject: [PATCH 3/3] Update docstring with external references Added links to Wikipedia and LeetCode for reference. --- strings/is_isomorphic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/strings/is_isomorphic.py b/strings/is_isomorphic.py index 244f4cb17f87..3e90e2d536eb 100644 --- a/strings/is_isomorphic.py +++ b/strings/is_isomorphic.py @@ -1,7 +1,7 @@ def is_isomorphic(s: str, t: str) -> bool: """ - LeetCode No. 205 Isomorphic Strings Given two strings s and t, determine if they are isomorphic. + https://en.wikipedia.org/wiki/Isomorphism https://leetcode.com/problems/isomorphic-strings/description/ Two strings s and t are isomorphic if the characters in s can be