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

पायथन में चरित्र आवृत्तियों को अद्वितीय बनाने के लिए आवश्यक न्यूनतम विलोपन की गणना करने का कार्यक्रम

मान लीजिए कि हमारे पास एक स्ट्रिंग s है, s को अच्छा कहा जाता है यदि s में दो अलग-अलग वर्ण नहीं हैं जिनकी आवृत्ति समान है। s को एक अच्छी स्ट्रिंग बनाने के लिए हमें कम से कम वर्णों को हटाना होगा।

इसलिए, यदि इनपुट s ="ssstttuu" जैसा है, तो आउटपुट 2 होगा क्योंकि यदि हम एक 't' को हटाते हैं, तो तीन 's', दो 't' और दो 'u' होंगे, फिर से हटा दें एक, या तो 'टी' या 'यू', उन्हें अच्छा बनाने के लिए।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • val :=एक नया नक्शा जिसमें s के प्रत्येक वर्ण की आवृत्ति होती है
  • res :=0
  • numlist :=वैल से सभी फ़्रीक्वेंसी मानों की सूची को सॉर्ट करें
  • मेरे लिए 0 से लेकर अंकसूची -2 के आकार तक, करें
    • यदि numlist[i] शून्य नहीं है और numlist[i] numlist[i+1] के समान है, तो
      • numlist[i] :=numlist[i] - 1
      • रेस :=रेस + 1
      • k :=i-1
      • एम:=मैं
      • जबकि numlist[m] गैर-शून्य है और numlist[m] numlist[k] के समान है, do
        • numlist[k] :=numlist[k] - 1
        • k :=k - 1
        • एम :=एम - 1
        • रेस :=रेस + 1
  • रिटर्न रेस

उदाहरण

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

from collections import Counter
def solve(s):
   val = Counter(s)
   res = 0
   numlist = sorted([i for i in val.values()])
   for i in range(len(numlist)-1):
      if numlist[i] and numlist[i] == numlist[i+1]:
         numlist[i] -= 1
         res += 1
         k = i-1
         m = i
         while numlist[m] and numlist[m] == numlist[k]:
            numlist[k] -= 1
            k -= 1
            m -= 1
            res += 1

   return res

s = "ssstttuu"
print(solve(s))

इनपुट

"ssstttuu"

आउटपुट

2

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

    मान लीजिए कि हमारे पास दो सूचियां nums1 और nums2 हैं, जहां दोनों सूचियों में प्रत्येक तत्व 1 से 6 की सीमा में है। अब एक ऑपरेशन पर विचार करें, जिसके द्वारा, हम nums1 या nums2 से एक संख्या का चयन कर सकते हैं और इसके मान को 1 से 6 के बीच की संख्या में अपडेट कर सकते हैं। हमें आवश्यक संक्रियाओं की न्यूनत

  1. पायथन में स्ट्रिंग को क्रमबद्ध करने के लिए न्यूनतम संख्या में संचालन खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग s है। जब तक हमें एक क्रमबद्ध स्ट्रिंग नहीं मिल जाती, तब तक हमें s पर निम्न ऑपरेशन करना होगा - सबसे बड़ी अनुक्रमणिका का चयन करें जैसे कि 1 <=i

  1. पायथन में सभी विभिन्न पाठ्यक्रमों को कवर करने के लिए न्यूनतम सेमेस्टर की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक संख्या n है, यह दर्शाता है कि 1 से n तक के लेबल वाले n विभिन्न पाठ्यक्रम हैं। हमारे पास संबंध नामक एक सरणी भी है जहां संबंध [i] में एक जोड़ी (prevCourse_i, nextCourse_i) शामिल है, जो पाठ्यक्रम prevCourse_i और पाठ्यक्रम nextCourse_i के बीच एक पूर्वापेक्षा संबंध का प्रतिनिधित