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

पायथन में एक शब्द सरणी की सबसे लंबी उपसर्ग अनुक्रम खोजने का कार्यक्रम

मान लीजिए कि हमारे पास w नामक शब्दों की एक सूची है, जिसमें लोअरकेस स्ट्रिंग्स हैं। हमें w के सबसे लंबे अनुक्रम की लंबाई ज्ञात करनी है जहां प्रत्येक पिछला शब्द अगले शब्द का उपसर्ग है और अगले शब्द में केवल एक नया वर्ण जोड़ा गया है।

इसलिए, यदि इनपुट w =["pqr", "pq", "m", "mn", "pqrs"] जैसा है, तो आउटपुट 3 होगा क्योंकि हम अनुक्रम प्राप्त कर सकते हैं:["pq", " pqr", "pqrs"], जिसकी लंबाई 3 है।

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

  • सूची को क्रमबद्ध करें
  • dp :=एक नक्शा, जहां एक कुंजी के लिए डिफ़ॉल्ट मान 0 है
  • res :=0
  • w में प्रत्येक शब्द के लिए, करें
    • dp[word] :=dp[दूसरे अंतिम तत्व तक शब्द का सबस्ट्रिंग] + 1
    • res :=अधिकतम res और dp[word]
  • रिटर्न रेस

उदाहरण

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

from collections import defaultdict
def solve(w):
   w.sort()
   dp = defaultdict(int)
   res = 0
   for word in w:
      dp[word] = dp[word[:-1]] + 1
      res = max(res, dp[word])
   return res

w = ["pqr", "pq", "m", "mn", "pqrs"]
print(solve(w))

इनपुट

["pqr", "pq", "m", "mn", "pqrs"]

आउटपुट

3

  1. पायथन में सबसे लंबी मैट्रिक्स पथ लंबाई की लंबाई खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है, जहां 0 खाली सेल को इंगित करता है और 1 दीवार को इंगित करता है। हम पहली पंक्ति पर किसी भी खाली सेल से शुरू कर सकते हैं और अंतिम पंक्ति पर किसी भी खाली सेल पर समाप्त करना चाहते हैं। हम बाएँ, दाएँ या नीचे जा सकते हैं, हमें सबसे लंबा ऐसा रास्ता खोजना होगा जहाँ

  1. पायथन में सबसे लंबे समय तक लगातार बढ़ते सबस्ट्रिंग की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक लोअरकेस स्ट्रिंग s है। इसमें अंग्रेजी अक्षर के साथ-साथ ? प्रतीक। प्रत्येक के लिए ? हमें या तो इसे हटाना होगा या इसे किसी छोटे अक्षर से बदलना होगा। हमें अक्षर a से शुरू होने वाले सबसे लंबे क्रमागत रूप से बढ़ते हुए सबस्ट्रिंग की लंबाई ज्ञात करनी होगी। इसलिए, यदि इनपुट s =vta

  1. पायथन में एक एन-आरी पेड़ में सबसे लंबे पथ की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक किनारे की सूची है जहां प्रत्येक आइटम धारण कर रहा है (यू, वी) दर्शाता है कि आप वी के माता-पिता हैं। हमें पेड़ में सबसे लंबे पथ की लंबाई का पता लगाना है। पथ की लंबाई उस पथ में 1 + नोड्स की संख्या है। तो, अगर इनपुट पसंद है तो आउटपुट 5 होगा, क्योंकि पथ [1, 4, 5, 7] है, कुल