From af048de87ea89a5d23d826bc89467b90dd51cbec Mon Sep 17 00:00:00 2001 From: JeevaRamanathan Date: Wed, 1 Oct 2025 00:00:29 +0000 Subject: [PATCH 1/2] 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/2] 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)