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

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

केवल 'A' और 'B' से बनी स्ट्रिंग s दी गई है। न्यूनतम कितने वर्ण हटाएं ताकि सभी 'A' सभी 'B' से पहले आ जाएं (यानी स्ट्रिंग A...AB...B रूप में हो)।

उदाहरण

इनपुट: S = "AABAABB"

आउटपुट: 1

व्याख्या: अंतिम 'A' हटाएं → "AABBBB"।

एल्गोरिदम (प्रीफिक्स-सफिक्स काउंट)

  1. a_right = स्ट्रिंग में कुल 'A' की संख्या।
  2. b_left = 0, ans = a_right (सभी A हटाने का विकल्प)।
  3. प्रत्येक वर्ण c के लिए (बाएं से दाएं):
    • यदि c == 'A': a_right -= 1 (यह A अब बाएं भाग में है)।
    • अन्यथा ('B'): b_left += 1 (यह B बाएं भाग में है, इसे हटाना होगा)।
    • ans = min(ans, a_right + b_left) (दाएं के A + बाएं के B = कुल डिलीशन)।
  4. ans वापस करें।

पायथन कार्यान्वयन

class Solution:
    def solve(self, s):
        a_right = s.count("A")
        b_left = 0
        ans = a_right
        
        for c in s:
            if c == "A":
                a_right -= 1
            else:
                b_left += 1
            ans = min(ans, a_right + b_left)
        return ans

# परीक्षण
ob = Solution()
print(ob.solve("AABAABB"))  # 1
print(ob.solve("BBBB"))     # 0
print(ob.solve("AAAA"))     # 0
print(ob.solve("BBA"))      # 1 (पहले दो B हटाएं या अंतिम A हटाएं)

समय जटिलता

  • O(n) समय, O(1) स्थान।
  • एक पास, स्थिर अतिरिक्त मेमोरी।

व्याख्या

हम विभाजन बिंदु पर विचार करते हैं: बाएं भाग में केवल 'A' होंगे (बाएं के 'B' हटाए जाएंगे), दाएं भाग में केवल 'B' होंगे (दाएं के 'A' हटाए जाएंगे)। प्रत्येक संभावित विभाजन के लिए डिलीशन की गणना करके न्यूनतम लेते हैं।

  1. पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास रंगों (R, G, B) की एक लिस्ट है। अब यदि दो अलग-अलग रंग अगल-बगल हैं तो वे तीसरे रंग के एकल रंग आइटम में बदल सकते हैं। हमें किसी भी संभावित परिवर्तन अनुक्रम के बाद शेष सबसे छोटी संख्या ढूंढनी है।उदाहरण के लिए, यदि इनपुट colors = [G, R, G, B, R] है, तो आउटपुट 1 होगा क्योंकि यह नीचे द

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

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

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

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