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

Python प्रोग्राम - स्ट्रिंग को समान स्ट्रिंग के दोहराव बनाने के लिए न्यूनतम ऑपरेशन

एक लोअरकेस स्ट्रिंग s दी गई है। एक ऑपरेशन पर विचार करें जहां हम s में किसी भी वर्ण को हटा सकते हैं, डाल सकते हैं या अपडेट कर सकते हैं। हमें न्यूनतम ऑपरेशन की संख्या गिननी है ताकि s = t + t किसी स्ट्रिंग t के लिए हो।

उदाहरण

इनपुट: s = "pqrxqsr"

आउटपुट: 2

व्याख्या: हम "x" को "p" से अपडेट कर सकते हैं और "s" को हटा सकते हैं, तब s बनेगा "pqrpqr", यह s = t + t है जहां t = "pqr"।

एल्गोरिदम (एडिट डिस्टेंस)

  1. edit_distance(s1, s2) फंक्शन परिभाषित करें जो दो स्ट्रिंग के बीच एडिट डिस्टेंस की गणना करता है
  2. m := len(s1), n := len(s2)
  3. cur := list(range(n + 1))
  4. i 0 से m-1 तक:
    • prev := cur
    • cur := [i + 1] + [0] * n
    • j 0 से n-1 तक:
      • cur[j + 1] = prev[j] if s1[i] == s2[j] else min(cur[j], prev[j], prev[j + 1]) + 1
  5. cur[n] लौटाएं
  6. मुख्य फंक्शन में:
    • res := len(s)
    • i 0 से len(s)-1 तक:
      • res = min(edit_distance(s[:i], s[i:]), res)
    • res लौटाएं

Python कार्यान्वयन

def solve(s):
    def edit_distance(s1, s2):
        m, n = len(s1), len(s2)
        cur = list(range(n + 1))
        for i in range(m):
            prev, cur = cur, [i + 1] + [0] * n
            for j in range(n):
                cur[j + 1] = (prev[j] if s1[i] == s2[j] else min(cur[j], prev[j], prev[j + 1]) + 1)
        return cur[n]
    
    res = len(s)
    for i in range(len(s)):
        res = min(edit_distance(s[:i], s[i:]), res)
    return res

s = "pqrxqsr"
print(solve(s))  # आउटपुट: 2

इनपुट/आउटपुट

Input: "pqrxqsr"
Output: 2

नोट: मूल आउटपुट में None दिखाया गया है जो एक त्रुटि प्रतीत होती है। सही आउटपुट 2 होना चाहिए।

  1. - पायथन में सभी सेल्स को एक ही रंग में बदलने के लिए आवश्यक ऑपरेशनों की संख्या गिनने का प्रोग्राम

    मान लीजिए हमारे पास एक दो-आयामी मैट्रिक्स M है। अब प्रत्येक सेल में एक मान होता है जो उसके रंग को दर्शाता है, और समान रंग वाले आसन्न सेल (ऊपर, नीचे, बाएं, दाएं) एक साथ समूहित होते हैं। अब, एक ऑपरेशन पर विचार करें जहां हम एक समूह के सभी सेल्स को किसी रंग में सेट करते हैं। फिर अंत में हर सेल का रंग स

  1. - पायथन में एक स्ट्रिंग को दूसरी स्ट्रिंग का सबस्ट्रिंग बनाने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं, हमें s के लिए आवश्यक न्यूनतम संक्रियाओं की मात्रा ढूंढनी है ताकि t, s का सबस्ट्रिंग बन जाए। अब, प्रत्येक संक्रिया में, हम s में किसी भी स्थिति को चुन सकते हैं और उस स्थिति के वर्ण को किसी अन्य वर्ण में बदल सकते हैं। उदाहरण के लिए, यदि इनपुट है s = abbpq

  1. - पायथन प्रोग्राम: सेट का उपयोग करके दिए गए स्ट्रिंग में वॉवेल्स की संख्या गिनना

    इस प्रोग्राम में, एक यूजर इनपुट स्ट्रिंग दी गई है। हमें इस स्ट्रिंग में वॉवेल्स की संख्या गिननी है। यहां हम पायथन में सेट का उपयोग करते हैं। सेट एक अनऑर्डर्ड कलेक्शन डेटा टाइप है जो इटरेबल, म्यूटेबल है और इसमें कोई डुप्लिकेट एलिमेंट्स नहीं होते।उदाहरणInput str1=pythonprogram Output 3एल्गोरिदमचरण 1: