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

पायथन में वर्ड ऐरे के सबसे लंबे प्रीफिक्स सीक्वेंस की लंबाई खोजने का प्रोग्राम

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

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

एल्गोरिदम

  1. सूची w को सॉर्ट करें।
  2. dp := एक मैप, जहां किसी कुंजी का डिफ़ॉल्ट मान 0 है।
  3. res := 0
  4. प्रत्येक word के लिए w में:
    • dp[word] := dp[word[:-1]] + 1
    • res := max(res, dp[word])
  5. res लौटाएं

उदाहरण कार्यान्वयन

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))  # आउटपुट: 3

इनपुट

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

आउटपुट

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

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

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

    मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है। इसमें अंग्रेजी अक्षर और साथ ही ? सिंबल होता है। प्रत्येक ? के लिए हमें या तो उसे हटाना होगा या किसी भी लोअरकेस अक्षर से बदलना होगा। हमें उस सबसे लंबे लगातार बढ़ते हुए सबस्ट्रिंग की लंबाई ढूंढनी है जो अक्षर a से शुरू होता है। उदाहरण के लिए, यदि इनपुट है s

  1. पायथन में n-ary ट्री में सबसे लंबे पथ की लंबाई खोजने का प्रोग्राम पायथन में n-ary ट्री में सबसे लंबे पथ की लंबाई खोजने का प्रोग्राम

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