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

पायथन में विशिष्ट सबसीक्वेंस की संख्या खोजने का प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें स्ट्रिंग s के विशिष्ट सबसीक्वेंस की संख्या गिननी है। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9 + 7 मॉड्यूलो वापस करें।

उदाहरण के लिए, यदि इनपुट s = "bab" है, तो आउटपुट 6 होगा क्योंकि 6 अलग-अलग अनुक्रम हैं, ये हैं "a", "b", "ba", "ab", "bb", "abb"।

हल करने के चरण

  1. dp := s के आकार का ऐरे और 0 से भरें
  2. m := 10^9 + 7
  3. s में प्रत्येक इंडेक्स i और आइटम char के लिए:
    • ind := s.rfind(char, 0, i) से i-वें कैरेक्टर का दायां इंडेक्स
    • dp[i] := 1 + (sum(dp[:i]) % m) यदि ind == -1 अन्यथा (sum(dp[ind:i]) % m)
  4. sum(dp) % m वापस करें।

उदाहरण

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

def solve(s):
    dp, m = [0] * len(s), 10**9 + 7
    for i, char in enumerate(s):
        ind = s.rfind(char, 0, i)
        dp[i] = 1 + sum(dp[:i]) % m if ind == -1 else sum(dp[ind:i]) % m
    return sum(dp) % m

s = "bab"
print(solve(s))

इनपुट

"bab"

आउटपुट

6
  1. - पायथन में Nवीं फाइबोनैचि संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है, हमें nवीं फाइबोनैचि पद ढूंढना है। जैसा कि हम जानते हैं iवां फाइबोनैचि पद f(i) = f(i-1) + f(i-2), पहले दो पद 0, 1 हैं। उदाहरण के लिए, यदि इनपुट 15 है, तो आउटपुट 610 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: first := 0, second := 1 i को 2 से n तक के

  1. पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक BST है, और हमारे पास बाएं और दाएं बाउंड l और r भी हैं, हमें रूट में उन सभी नोड्स की संख्या गिननी है जिनके मान l और r के बीच हैं (सम्मिलित)। उदाहरण के लिए, यदि इनपुट जैसा है: l = 7, r = 13, तो आउटपुट 3 होगा, क्योंकि तीन नोड्स हैं: 8, 10, 12। इसे हल करने के लिए हम निम्न चरणों

  1. - पायथन प्रोग्राम: लिस्ट में सबसे बड़ी संख्या ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट लिस्ट इनपुट दिए जाने पर, हमें दी गई लिस्ट में सबसे बड़ी संख्या ढूंढने की आवश्यकता है। यहां हम दो दृष्टिकोणों पर चर्चा करेंगे: सॉर्टिंग तकनीकों का उपयोग करना बिल्ट-इन max() फंक्शन का