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

पायथन में तीन शर्तों में से एक को पूरा करने के लिए न्यूनतम वर्ण बदलने का कार्यक्रम

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

  • s का प्रत्येक अक्षर वर्णमाला के t के प्रत्येक अक्षर से कड़ाई से छोटा होता है।

  • t में प्रत्येक अक्षर वर्णमाला के s के प्रत्येक अक्षर से कड़ाई से छोटा है।

  • s और t दोनों में केवल एक अलग अक्षर होता है।

हमें परिणाम प्राप्त करने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट s ="sts", t ="uss" जैसा है, तो आउटपुट 2 होगा क्योंकि

  • यदि हम 2 संक्रियाओं में t को "uuu" में बदलते हैं, तो s का प्रत्येक अक्षर t के प्रत्येक अक्षर से छोटा होता है।

  • यदि हम 3 ऑपरेशनों में s को "ttt" और t को "sss" में बदलते हैं, तो t का प्रत्येक अक्षर s के प्रत्येक अक्षर से छोटा होता है।

  • अगर हम 2 ऑपरेशनों में s को "sss" और t को "sss" में बदलते हैं, तो s और t में एक अलग अक्षर होता है।

यहां 2 ऑपरेशन (या तो 1 या 3) में सबसे अच्छा तरीका किया गया था।

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

  • काउंटर_एस:=प्रत्येक वर्ण की आवृत्ति को s में रखने के लिए नक्शा
  • काउंटर_टी:=टी में प्रत्येक वर्ण की आवृत्ति रखने के लिए नक्शा
  • less_s:=अनंत, कम_t:=अनंत, अद्वितीय:=अनंत
  • accu_s:=0, accu_t:=0
  • लोअरकेस अंग्रेज़ी वर्ण में प्रत्येक वर्ण c के लिए, करें
    • अद्वितीय:=अद्वितीय का न्यूनतम और (एस का आकार + टी का आकार - काउंटर_एस [सी] - काउंटर_टी [सी])
      • काउंटर_टी[सी])
    • यदि c का ascii 'a' के ascii से बड़ा है, तो
      • less_a :=कम से कम_s और (s का आकार - accu_s + accu_t)
      • less_b :=कम से कम कम_t और (आकार t - accu_t + accu_s)
    • accu_s :=accu_s + counter_s[c]
    • accu_t:=accu_t + counter_t[c]
  • कम से कम कम_s, less_t और अद्वितीय लौटाएं

उदाहरण

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

from collections import Counter
import string
def solve(s, t):
   counter_s = Counter(s)
   counter_t = Counter(t)
   less_s, less_t, unique = float('inf'), float('inf'), float('inf')
   accu_s, accu_t = 0, 0
   for c in string.ascii_lowercase:
      unique = min(unique, len(s) + len(t) - counter_s[c] - counter_t[c])
      if c > 'a':
         less_a = min(less_s, len(s) - accu_s + accu_t)
         less_b = min(less_t, len(t) - accu_t + accu_s)
      accu_s += counter_s[c]
      accu_t += counter_t[c]
   return min(less_s, less_t, unique)

s = "sts"
t = "uss"
print(solve(s, t))

इनपुट

"sts", "uss"

आउटपुट

2

  1. सिक्का परिवर्तन के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एन सिक्के दिए गए हैं और हम उन सिक्कों में बदलाव करना चाहते हैं, जैसे कि एस में प्रत्येक मूल्य की अनंत आपूर्ति है। हमें यह प्रदर्शित करने की आवश्यकता है कि हम कितने तरीकों से बदलाव कर सकते हैं, क्रम के बावजूद। हम

  1. पायथन कार्यक्रम अधिकतम तीन।

    तीन नंबर ए बी और सी को देखते हुए, हमारा काम यह है कि हमें दी गई संख्या में से अधिकतम तत्व को खोजना है। उदाहरण Input: a = 2, b = 4, c = 3 Output: 4 एल्गोरिदम Step 1: input three user input number. Step2: Add three numbers to list. Step 3: Using max() function to find the greatest number max(lst).

  1. एक सरणी को चक्रीय रूप से घुमाने के लिए पायथन प्रोग्राम

    उपयोगकर्ता इनपुट सरणी को देखते हुए। हमारा कार्य चक्रीय रूप से घुमाना है अर्थात दक्षिणावर्त मूल्य को घुमाना है। उदाहरण इनपुट:ए=[1,2,3,4,5]आउटपुट=[5,1,2,3,4] एल्गोरिदम चरण 1:इनपुट सरणी तत्व। चरण 2:अंतिम तत्व को एक चर x में संग्रहीत करें। चरण 3:सभी तत्वों को एक स्थान आगे शिफ्ट करें। चरण 4:सरणी के पहले