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

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


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

  • s का हर अक्षर वर्णमाला में t के हर अक्षर से सख्ती से छोटा हो।
  • t का हर अक्षर वर्णमाला में s के हर अक्षर से सख्ती से छोटा हो।
  • s और t दोनों में केवल एक विशिष्ट अक्षर हो।

हमें परिणाम प्राप्त करने के लिए आवश्यक न्यूनतम ऑपरेशन्स की संख्या ढूंढनी है।

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

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

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

हल करने के चरण

  1. counter_s := s में प्रत्येक कैरेक्टर की फ्रीक्वेंसी रखने के लिए मैप
  2. counter_t := t में प्रत्येक कैरेक्टर की फ्रीक्वेंसी रखने के लिए मैप
  3. less_s := infinity, less_t := infinity, unique := infinity
  4. accu_s := 0, accu_t := 0
  5. लोअरकेस अंग्रेजी कैरेक्टर में प्रत्येक c के लिए:
    • unique := min(unique, len(s) + len(t) - counter_s[c] - counter_t[c])
    • यदि c > 'a', तो:
      • less_s := min(less_s, len(s) - accu_s + accu_t)
      • less_t := min(less_t, len(t) - accu_t + accu_s)
    • accu_s += counter_s[c]
    • accu_t += counter_t[c]
  6. less_s, less_t, unique का न्यूनतम वापस करें।

उदाहरण

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

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_s = min(less_s, len(s) - accu_s + accu_t)
            less_t = 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. पायथन प्रोग्राम: सिक्का परिवर्तन पायथन प्रोग्राम: सिक्का परिवर्तन

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

  1. - पायथन प्रोग्राम: तीन नंबर्स में अधिकतम

    तीन नंबर a, b और c दिए गए हैं, हमारा कार्य दिए गए नंबरों में से अधिकतम एलिमेंट ढूंढना है।उदाहरणInput: a = 2, b = 4, c = 3 Output: 4एल्गोरिदमचरण 1: तीन यूजर इनपुट नंबर इनपुट करें। चरण 2: तीन नंबर्स को लिस्ट में जोड़ें। चरण 3: सबसे बड़ी संख्या खोजने के लिए max() फंक्शन का उपयोग करें max(lst)। चरण 4: औ

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

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