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

पायथन में स्ट्रिंग को आधा नीरस बनाने के लिए कितने अपडेट की आवश्यकता है, यह जानने के लिए कार्यक्रम

मान लीजिए कि हमारे पास एक लोअरकेस स्ट्रिंग है जिसकी लंबाई सम है। हमें उन वर्णों की न्यूनतम संख्या ज्ञात करनी है जिन्हें अद्यतन करने की आवश्यकता है ताकि निम्नलिखित तीन शर्तों में से एक सभी i के लिए संतुष्ट हो, जहां 0 i

  • s[i]> s[j]
  • s[i]
  • s[i] ==s[j]

इसलिए, यदि इनपुट s ="pppxxp" जैसा है, तो आउटपुट 1 होगा क्योंकि यदि हम अंतिम "p" को "x" में बदलते हैं, तो यह s[i]

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

  • n :=आकार का
  • बाएं:=एक शब्दकोश जिसमें s के बाएं आधे भाग से प्रत्येक वर्ण की आवृत्तियां होती हैं
  • दाएं:=एक ऐसा शब्दकोष जिसमें s के दाहिने आधे भाग से प्रत्येक वर्ण की बारंबारता हो
  • उत्तर:=n
  • लोअरकेस अंग्रेज़ी अक्षरों में प्रत्येक वर्ण पिवट के लिए, करें
    • Ans :=न्यूनतम उत्तर और (n - बाएँ[पिवट] - दाएँ [पिवट])
    • अच्छा :=इसमें मौजूद सभी तत्वों का योग (बाएं [c] प्रत्येक c के लिए बाईं ओर यदि c <=पिवट )
    • अच्छा:=अच्छा + दाईं ओर मौजूद सभी तत्वों का योग[c] दाईं ओर प्रत्येक c के लिए यदि c> पिवट
    • उत्तर :=न्यूनतम उत्तर और (n - अच्छा)
    • अच्छा:=बाईं ओर मौजूद सभी तत्वों का योग[c] बाईं ओर प्रत्येक c के लिए यदि c> पिवट
    • अच्छा:=अच्छा + दाईं ओर मौजूद सभी तत्वों का योग[c] प्रत्येक c के लिए दाईं ओर अगर c <=पिवट
    • उत्तर :=न्यूनतम उत्तर और (n - अच्छा)
  • वापसी उत्तर

उदाहरण

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

from collections import Counter
from string import ascii_lowercase
def solve(s):
   n = len(s)
   left = Counter(s[: n >> 1])
   right = Counter(s[n >> 1 :])

   ans = n
   for pivot in ascii_lowercase:
      ans = min(ans, n - left[pivot] - right[pivot])

      good = sum(left[c] for c in left if c <= pivot)
      good += sum(right[c] for c in right if c > pivot)
      ans = min(ans, n - good)

      good = sum(left[c] for c in left if c > pivot)
      good += sum(right[c] for c in right if c <= pivot)
      ans = min(ans, n - good)

   return ans

s = "pppxxp"
print(solve(s))

इनपुट

"pppxxp"

आउटपुट

1

  1. पायथन में कितनी रेखाएँ प्रतिच्छेद करती हैं, यह जानने के लिए कार्यक्रम

    मान लीजिए हमें एक सूची दी गई है जिसमें (m, c) के युग्मों में मान हैं। ये मान एक रेखा का प्रतिनिधित्व करते हैं, जहां y =mx + c। हमें दो मान, l और r भी दिए गए हैं। हमें x =l से x =h के बीच एक दूसरे को प्रतिच्छेद करने वाली रेखाओं की संख्या ज्ञात करनी है। इसलिए, यदि इनपुट input_list =[[4, 6],[-6, 10],[

  1. कितने क्यूब्स काटे गए यह पता लगाने के लिए पायथन प्रोग्राम

    मान लीजिए, a, b, और c आयामों के कई घन हैं, और उनका उपयोग करके आयाम axbxc का एक नया बॉक्स बनाया जाता है। ए, बी, और सी जोड़ीदार सह-अभाज्य हैं; gcd(a, b) =gcd(b,c) =gcd(c, d) =1. हमें बॉक्स को एक ही स्लाइस से दो टुकड़ों में काटना है जैसा कि चित्र में दिखाया गया है। हमें यह पता लगाना है कि क्या डिब्बे क

  1. एक स्ट्रिंग में दर्पण वर्ण खोजने के लिए पायथन प्रोग्राम

    उपयोगकर्ता इनपुट स्ट्रिंग और उस स्थिति से स्थिति को देखते हुए हमें वर्णों को वर्णानुक्रम में स्ट्रिंग की लंबाई तक दर्पण करने की आवश्यकता है। इस ऑपरेशन में, हम a को z, b से y, c से x, d से w में बदलते हैं और इसी तरह से पहला कैरेक्टर आखिरी हो जाता है और इसी तरह चालू। Inpu t: p = 3 Input string = p