LeetCode問題解-python 205.アイソメトリック文字列Isomorphic Strings(Easy)

4342 ワード

LeetCode問題解-python
  • 205.アイソメトリック文字列Isomorphic Strings(Easy)
  • 解題構想
  • github
  • タイトルコード(python 3)
  • 205.アイソトープ文字列Isomorphic Strings(Easy)
    2つの文字列sおよびtが与えられ、それらが同構造であるか否かが判断される.s中の文字を置換してtを得ることができる場合、この2つの文字列は同構造である.表示されるすべての文字は、文字の順序を保持しながら別の文字で置換する必要があります.2つの文字は同じ文字にマッピングできませんが、文字は自分自身をマッピングできます.例1:入力:s=「egg」、t=「add」出力:true例2:入力:s=「foo」、t=「bar」出力:false例3:入力:s=「paper」、t=「title」出力:true説明:sとtが同じ長さであると仮定できます.
    問題を解く構想.
    同性:2つの文字列は1つずつ対応し、順序は2つの文字列(シリアル1、シリアル2)を辞書のkeyとvalueにそれぞれ保存することはできません.シリアル1のxがkeyにあるが、x対応のvalueがシリアル2にない場合はエラーです.シリアル1のxがkeyにないが、シリアル2の値がvalueにある場合はエラーです.Enumerate()関数は、リスト、メタグループ、文字列などの遍歴可能なデータオブジェクトをインデックスシーケンスに結合し、forループで一般的に使用されるデータとデータの下付き文字をリストするために使用されます.
    説明がはっきりしているかどうか分かりません(#.#)コードを体得すれば分かるので間違いがあるところはご指摘ください
    github
    リンク:https://github.com/seattlegirl/leetcode/blob/master/isomorphic-strings.py.
    タイトルコード(python 3)
    class Solution:
        def isIsomorphic(self, s, t):
            """
            :type s: str
            :type t: str
            :rtype: bool
            """
            dic={}
            for i,x in enumerate(s):
                if x in dic.keys() and dic[x]!=t[i]:
                    return  False
                elif x not in dic.keys() and t[i] in dic.values():
                    return False
                else:
                    dic[x]=t[i]
                    
            return True
    
    if __name__ == "__main__":
        print Solution().isIsomorphic("egg", "add")