मैं अपने स्वयं के कार्यान्वयन का विरोध नहीं कर सका। यह सभी अक्षरों को क्रमबद्ध रूप से क्रमबद्ध करके, और उन शब्दों से मानचित्रण करके एक शब्दकोश बनाता है जो उन्हें बनाया जा सकता है। यह एक ओ (एन) स्टार्ट-अप ऑपरेशन है जो सभी क्रमपरिवर्तनों को खोजने की आवश्यकता को समाप्त करता है। तेजी से गति प्राप्त करने के लिए आप किसी अन्य भाषा में ट्राई के रूप में शब्दकोश को कार्यान्वित कर सकते हैं।
"getAnagrams" कमांड भी एक ओ (एन) ऑपरेशन है जो यह देखने के लिए शब्दकोश में प्रत्येक शब्द को खोजता है कि यह खोज का सबसेट है या नहीं। getAnagrams कर ("radiotelegraphically") "(एक 20 पत्र शब्द) लगभग 1 सेकंड अपने लैपटॉप पर ले लिया, और 1496 विपर्यय लौटे
# Using the 38617 word dictionary at
# http://www.cs.umd.edu/class/fall2008/cmsc433/p5/Usr.Dict.Words.txt
# Usage: getAnagrams("helloworld")
def containsLetters(subword, word):
wordlen = len(word)
subwordlen = len(subword)
if subwordlen > wordlen:
return False
word = list(word)
for c in subword:
try:
index = word.index(c)
except ValueError:
return False
word.pop(index)
return True
def getAnagrams(word):
output = []
for key in mydict.iterkeys():
if containsLetters(key, word):
output.extend(mydict[key])
output.sort(key=len)
return output
f = open("dict.txt")
wordlist = f.readlines()
f.close()
mydict = {}
for word in wordlist:
word = word.rstrip()
temp = list(word)
temp.sort()
letters = ''.join(temp)
if letters in mydict:
mydict[letters].append(word)
else:
mydict[letters] = [word]
एक उदाहरण रन:।
>>> getAnagrams("helloworld")
>>> ['do', 'he', 'we', 're', 'oh', 'or', 'row', 'hew', 'her', 'hoe', 'woo', 'red', 'dew', 'led', 'doe', 'ode', 'low', 'owl', 'rod', 'old', 'how', 'who', 'rho', 'ore', 'roe', 'owe', 'woe', 'hero', 'wood', 'door', 'odor', 'hold', 'well', 'owed', 'dell', 'dole', 'lewd', 'weld', 'doer', 'redo', 'rode', 'howl', 'hole', 'hell', 'drew', 'word', 'roll', 'wore', 'wool','herd', 'held', 'lore', 'role', 'lord', 'doll', 'hood', 'whore', 'rowed', 'wooed', 'whorl', 'world', 'older', 'dowel', 'horde', 'droll', 'drool', 'dwell', 'holed', 'lower', 'hello', 'wooer', 'rodeo', 'whole', 'hollow', 'howler', 'rolled', 'howled', 'holder', 'hollowed']
कैसे "do" आ उपरोक्त मामले में कोई मान्य स्ट्रिंग है? यह किसी भी substring ryt का एक आरेख नहीं है? – nitish712
@ nitish712 "do" मान्य है क्योंकि अक्षरों 'डी' और 'ओ' इनपुट स्ट्रिंग में हैं। – PowerApp101