classSolution(object):deffindAllConcatenatedWordsInADict(self, words):"""
:type words: List[str]
:rtype: List[str]
"""defcanBreak(w,wdict):if w=='': flag[0]=Truefor i inrange(len(w)):if w[:i+1]in wdict and wdict[w[:i+1]]:
canBreak(w[i+1:],wdict)if flag[0]:returnTrue
res=[]
wdict={}for w in words:
wdict[w]=Truefor w in words:
wdict[w]=False
flag=[False]if canBreak(w,wdict):
res.append(w)
wdict[w]=Truereturn res
classSolution:deffindAllConcatenatedWordsInADict(self, words):"""
:type words: List[str]
:rtype: List[str]
"""defcanBreak(w,wdict,mydict):if w in mydict:return mydict[w]if w=='':returnTruefor i inrange(len(w)):if w[:i+1]in wdict and wdict[w[:i+1]]:if canBreak(w[i+1:],wdict,mydict):
mydict[w[:i+1]]=TruereturnTrue
mydict[w[:i+1]]=FalsereturnFalse
res=[]
wdict={}for w in words:
wdict[w]=Truefor w in words:
wdict[w]=False
flag=[False]if w!=""and canBreak(w,wdict,{}):
res.append(w)
wdict[w]=Truereturn res