項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【Leetcode】python – [205] Isomorphic Strings 個人解法筆記

題目出處

205. Isomorphic Strings

難度

easy

個人範例程式碼

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        if not s or not t:
            return False

        if len(s) != len(t):
            return False

        s_to_t = {}
        t_to_s = {}

        for i in range(len(s)):
            if s[i] in s_to_t and t[i] in t_to_s:
                if s_to_t[s[i]] == t[i] and t_to_s[t[i]] == s[i]:
                    continue
                else:
                    return False
            else:
                if s[i] in s_to_t: # one side alraedy exist
                    return False

                if t[i] in t_to_s:
                    return False

                s_to_t[s[i]] = t[i]
                t_to_s[t[i]] = s[i]

        return True

算法說明

注意:來回雙向都要配對

這題要注意的點就是「雙向配對」,因為如果只有單向配對時,有可能出現 “abcd” 也能 matching “ssss” 的情況。

(因為 hashmap 中存的東西,不論 a,b,c,d 都對應到 s)

input handling

處理 len(s) != len(t) 的情況,處理 s 或 t 不存在值的情況。

Boundary conditions

用 for 來控制範圍

Reference

⭐ Leetcode 解題紀錄 ⭐題型資料結構Python SolutionC++ SolutionNote
⭐BFS 相關題型 ⭐
104Maximum Depth of Binary TreeBFS (分層)Python
94Binary Tree Inorder TraversalBFS (分層)TreePython 內含 處理 Tree 樹問題的重點
102Binary Tree Level Order TraversalBFS (分層)TreePython
103Binary Tree Zigzag Level Order TraversalBFS (分層)TreePython
107Binary Tree Level Order Traversal IIBFS (分層)TreePython
133Clone GraphBFS (分層)GraphPython Graph 的基本操作 #重要題型
127Word LadderBFS (分層), DFSGraphPython
[Lint] 127Topological SortingBFS (拓撲)Python
內有 indegree, outdegree 介紹 #重要題型
207Course ScheduleBFS (拓樸)GraphPython
210Course Schedule IIBFS (拓樸)GraphPython
[Lint] 892Alien DictionaryBFS (拓樸)GraphPython
[Lint] 431Connected Component in Undirected GraphBFS (連通塊)GraphPython 內含 BFS 模板 #重要題型
1091Shortest Path in Binary MatrixBFS (最短路徑)MatrixPython
⭐ Binary Serach 相關題型 ⭐
33Search in Rotated Sorted ArrayBinary SerachArray