Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में Trie (प्रीफिक्स ट्री) कार्यान्वित करें

मान लीजिए हमें तीन बेसिक ऑपरेशन्स जैसे insert(), search(), startsWith() मेथड्स के साथ Trie स्ट्रक्चर बनाना है। हम मान सकते हैं कि सभी इनपुट लोअरकेस अक्षरों में हैं। उदाहरण के लिए, यदि हम फ़ंक्शन्स को निम्न तरह से कॉल करते हैं, तो हम आउटपुट देखेंगे

  • Trie trie = new Trie()
  • trie.insert("apple")
  • trie.search("apple") // यह true लौटाएगा
  • trie.search("app") // यह false लौटाएगा
  • trie.startsWith("app") // यह true लौटाएगा
  • trie.insert("app")
  • trie.search("app") // यह true लौटाएगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • प्रारंभ में child नामक एक डिक्शनरी बनाएं।
  • insert मेथड इस तरह होगा -
  • current := child
  • word में प्रत्येक अक्षर l के लिए -
    • यदि l current में मौजूद नहीं है, तो current[l] := नई डिक्शनरी
    • current := current[l]
  • current[#] = 1
  • search मेथड इस तरह होगा -
  • current := child
  • word में प्रत्येक अक्षर l के लिए -
    • यदि l current में मौजूद नहीं है, तो false लौटाएं
    • current := current[l]
  • यदि current[#] = 1 तो true लौटाएं, अन्यथा false
  • startsWith मेथड इस तरह होगा -
  • current := child
  • prefix में प्रत्येक अक्षर l के लिए -
    • यदि l current में मौजूद नहीं है, तो false लौटाएं
    • current := current[l]
  • True लौटाएं

बेहतर समझ के लिए निम्न कार्यान्वयन देखें -

उदाहरण

class Trie(object):
    def __init__(self):
        self.child = {}
    def insert(self, word):
        current = self.child
        for l in word:
            if l not in current:
                current[l] = {}
            current = current[l]
        current['#'] = 1
    def search(self, word):
        current = self.child
        for l in word:
            if l not in current:
                return False
            current = current[l]
        return '#' in current
    def startsWith(self, prefix):
        current = self.child
        for l in prefix:
            if l not in current:
                return False
            current = current[l]
        return True

ob1 = Trie()
ob1.insert("apple")
print(ob1.search("apple"))
print(ob1.search("app"))
print(ob1.startsWith("app"))
ob1.insert("app")
print(ob1.search("app"))

इनपुट

ob1 = Trie() ob1.insert("apple") print(ob1.search("apple")) print(ob1.search("app")) print(ob1.startsWith("app")) ob1.insert("app") print(ob1.search("app"))

आउटपुट

True False True True
  1. पायथन में सममित ट्री पायथन में सममित ट्री

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें जांचना है कि क्या ट्री एक सममित ट्री है या नहीं। एक ट्री को सममित कहा जाएगा यदि यह दर्पण छवि लेने पर समान हो। इन दो ट्री में, पहला सममित है, लेकिन दूसरा नहीं। हल करने के चरण हम निम्नलिखित चरणों को पुनरावर्ती रूप से कॉल करेंगे। फंक्शन solve(root, root) ह

  1. पायथन में IsNumber() फंक्शन कार्यान्वित करें पायथन में IsNumber() फंक्शन कार्यान्वित करें

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण का उपयोग करके isNumber() मेथड को कार्यान्वित करने के बारे में जानेंगे।यह मेथड इनपुट के रूप में एक स्ट्रिंग टाइप लेता है और बूलियन True या False वापस करता है इस आधार पर कि दर्ज स्ट्रिंग एक संख्या है या नहीं। ऐसा करने के लिए हम ट्राई और एक्सेप्ट स्टेटमे

  1. रूबी में प्रीफिक्स ट्री (ट्राइज़) में महारत: कार्यान्वयन और व्यावहारिक उपयोग रूबी में प्रीफिक्स ट्री (ट्राइज़) में महारत: कार्यान्वयन और व्यावहारिक उपयोग

    एक प्रीफिक्स ट्री (जिसे ट्राई भी कहा जाता है) एक डेटा संरचना है जो आपको शब्द सूची को व्यवस्थित करने और विशिष्ट प्रीफिक्स से शुरू होने वाले शब्दों को जल्दी से ढूंढने में मदद करती है। उदाहरण के लिए, आप अपने डिक्शनरी में उन सभी शब्दों को ढूंढ सकते हैं जो ca अक्षरों से शुरू होते हैं, जैसे cat या cape। इ