leetcode word pattern 및 Isomorphic Strings – 간단한 쓰기 주의
하지만 가장 간단하게 쓰면 달라진다.맵도 쓸 수 있어요.
제 코드는 좀 복잡하게 썼어요.
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
dict1 = {}
pl = list(pattern)
sl = str.split()
if len(pl) != len(sl):
return False
for i in xrange(len(pl)):
if pl[i] in dict1:
dict1[pl[i]].append(i)
else:
dict1[pl[i]] = [i]
dict2 = {}
for j in xrange(len(sl)):
if sl[j] in dict2:
dict2[sl[j]].append(j)
else:
dict2[sl[j]] = [j]
list1 = [ tuple(x) for x in dict1.values()]
list2 = [ tuple(x) for x in dict2.values()]
set1 = set(list1)
set2 = set(list2)
if set1 == set2:
return True
else:
return False
하지만 비교적 간단한 언어를 사용할 수 있다.예를 들어, zip
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
words = str.split()
if len(pattern) != len(words):
return False
ptnDict, wordDict = {}, {}
for ptn, word in zip(pattern, words):
if ptn not in ptnDict:
ptnDict[ptn] = word
if word not in wordDict:
wordDict[word] = ptn
if wordDict[word] != ptn or ptnDict[ptn] != word:
return False
return True
그리고 두 단락이 더 쉬워요.
http://bookshadow.com/weblog/2015/10/05/leetcode-word-pattern/
맵,filter,reduce 사용법 주의
http://fcamel-fc.blogspot.hk/2011/08/python-1.html
def wordPattern(self, pattern, str):
s = pattern
t = str.split()
return map(s.find, s) == map(t.index, t)
https://leetcode.com/problems/isomorphic-strings/
class Solution(object):
def isIsomorphic(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
a = list(s)
b = list(t)
if len(a) != len(b):
return False
dict1 = {}
dict2 = {}
for i,j in zip(a,b):
if i not in dict1:
dict1[i] = j
if j not in dict2:
dict2[j] = i
if dict1[i] != j or dict2[j] != i:
return False
return True
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.