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

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

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

उदाहरण

इनपुट: s = "pipe", t = "ripe"

आउटपुट: 2

व्याख्या: हम s से "p" और t से "r" हटा सकते हैं ताकि ये स्ट्रिंग समान "ipe" बन जाएं।

एल्गोरिदम (डायनामिक प्रोग्रामिंग - रिकर्सिव)

  1. m := len(s), n := len(t)
  2. dp(i, j) फंक्शन परिभाषित करें:
    • यदि i == m: n - j लौटाएं
    • अन्यथा यदि j == n: m - i लौटाएं
    • अन्यथा:
      • यदि s[i] == t[j]: dp(i + 1, j + 1) लौटाएं
      • अन्यथा: 1 + min(dp(i + 1, j), dp(i, j + 1)) लौटाएं
  3. dp(0, 0) लौटाएं

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

def solve(s, t):
    m = len(s)
    n = len(t)
    def dp(i, j):
        if i == m:
            return n - j
        elif j == n:
            return m - i
        else:
            if s[i] == t[j]:
                return dp(i + 1, j + 1)
            else:
                return 1 + min(dp(i + 1, j), dp(i, j + 1))
    return dp(0, 0)

s = "pipe"
t = "ripe"
print(solve(s, t))  # आउटपुट: 2

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

Input: "pipe", "ripe"
Output: 2

नोट: यह रिकर्सिव दृष्टिकोण है। बड़ी स्ट्रिंग के लिए मेमोइजेशन या बॉटम-अप DP का उपयोग करें।

  1. - पायथन में सभी A को B से पहले लाने के लिए न्यूनतम डिलीशन गिनने का प्रोग्राम

    केवल A और B से बनी स्ट्रिंग s दी गई है। न्यूनतम कितने वर्ण हटाएं ताकि सभी A सभी B से पहले आ जाएं (यानी स्ट्रिंग A...AB...B रूप में हो)। उदाहरण इनपुट: S = AABAABB आउटपुट: 1 व्याख्या: अंतिम A हटाएं → AABBBB। एल्गोरिदम (प्रीफिक्स-सफिक्स काउंट) a_right = स्ट्रिंग में कुल A की संख्या। b_left = 0, ans

  1. - पायथन में सूची को संतुलित बनाने के लिए दोनों छोरों से न्यूनतम डिलीशन की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास 0 और 1 वाली एक सूची है, हमें सूची के सामने से या पीछे से मान हटाने हैं। अंत में, हमें न्यूनतम डिलीशन की संख्या ढूंढनी है जैसे कि शेष सूची में 0 और 1 की समान संख्या हो।इसलिए, यदि इनपुट nums = [1, 1, 1, 0, 0, 1] जैसा है, तो आउटपुट 2 होगा, क्योंकि हम पहले 1 और अंतिम 1 को हटा सकते है

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

    मान लीजिए हमारे पास एक संख्या start और एक अन्य संख्या end है (start < end), हमें start को end में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ढूंढनी है इन संक्रियाओं का उपयोग करके: 1 से बढ़ाएं 2 से गुणा करें उदाहरण के लिए, यदि इनपुट है start = 5, end = 11, तो आउटपुट होगा 2, क्योंकि हम 2 से ग