leetcode205:同構字串
阿新 • • 發佈:2018-11-11
思想:
定義一個空字典reserve,先判斷s[i]是否再字典鍵中,若不在則繼續判斷t[i]是否在字典值中,若不在則賦值,若在則返回False。若在則判斷值是否相等,相等則繼續,反之則返回False。
class Solution: def isIsomorphic(self, s, t): """ :type s: str :type t: str :rtype: bool """ reserve = {} for i in range(len(s)): if s[i] not in reserve: if t[i] not in reserve.values(): reserve[s[i]] = t[i] else: return False else: if reserve[s[i]]!=t[i]: return False return True
當小菜鳥自己寫出來的時候還是蠻開心的,然後大佬的方法總是打臉。。。。
class Solution(object):
def isIsomorphic(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
return len(set(s)) == len(set(t)) == len(set(zip(s, t)))
大佬的思想:
將set(t)後算長度(去重),set(s)後算長度,zip(s,t)將s和t兩兩對應位置打包成元祖在組合成列表,然後在set()之後算長度。只有三個長度都相等的時候s和t才是同構字串。
知識點:
1.zip()
a = [1,2,3]
b = [4,5,6]
zipped = zip(a,b) #打包為元組的列表
[(1, 4), (2, 5), (3, 6)]