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

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

मान लीजिए कि हमारे पास एक स्ट्रिंग s है। जब तक हमें एक क्रमबद्ध स्ट्रिंग नहीं मिल जाती, तब तक हमें s पर निम्न ऑपरेशन करना होगा -

  • सबसे बड़ी अनुक्रमणिका का चयन करें जैसे कि 1 <=i

  • सबसे बड़े सूचकांक j का चयन करें जैसे कि i <=j <लंबाई की s और s[k]

  • इंडेक्स i - 1 और j पर दो वर्णों का आदान-प्रदान करें।

  • अनुक्रमणिका i से प्रत्यय उल्टा करें।

हमें स्ट्रिंग को सॉर्ट करने के लिए आवश्यक संचालन की संख्या का पता लगाना होगा। उत्तर बहुत बड़ा हो सकता है इसलिए वापसी परिणाम मॉड्यूल 10^9 + 7.

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

  • पहले ऑपरेशन में, i=3, j=4. s="ppppq" प्राप्त करने के लिए s[2] और s[4] का आदान-प्रदान करें, फिर इंडेक्स 3 से सबस्ट्रिंग को उलट दें। अब, s="pppqp"।

  • दूसरे ऑपरेशन में, i=4, j=4. s[3] और s[4] को s="ppppq" प्राप्त करने के लिए एक्सचेंज करें, फिर इंडेक्स 4 से सबस्ट्रिंग को उलट दें, अब, s ="ppppq"।

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

  • d :=26 आकार की एक सरणी और 0 से भरें

  • ए:=0, टी:=1

  • मी :=10^9 + 7

  • n :='a' का ASCII

  • प्रत्येक अनुक्रमणिका i और s के वर्ण c के लिए उल्टे क्रम में, 1 से अनुक्रमणिका प्रारंभ करें, करें

    • j :=c - n का ASCII

    • d[j] :=d[j] + 1

    • a :=(a + d के सभी तत्वों का योग [सूचकांक 0 से j-1 तक]) * t/d[j] का भागफल) mod m

    • t :=t * i/d[j]

      . का भागफल
  • वापसी एक

उदाहरण

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

def solve(s):
   d = [0]*26
   a = 0
   t = 1
   m = 10**9 + 7
   n = ord('a')
   for i,c in enumerate(s[::-1],1):
      j = ord(c) - n
      d[j] += 1
      a = (a+sum(d[:j])*t//d[j]) % m
      t = t*i//d[j]
   return a

s = "ppqpp"
print(solve(s))

इनपुट

"ppqpp"

आउटपुट

2

  1. स्ट्रिंग की संख्या खोजने के लिए प्रोग्राम जहां हम 'ए' 'ए' या 'बी' हो सकते हैं, और 'बी' पाइथन में 'बी' रहता है

    मान लीजिए कि हमारे पास केवल ए और बी के साथ एक स्ट्रिंग है। ए एस ए रह सकता है या बी में बदल सकता है, लेकिन बी को बदला नहीं जा सकता है। हमें अद्वितीय स्ट्रिंग्स की संख्या ज्ञात करनी होगी जो हम बना सकते हैं। इसलिए, यदि इनपुट s =baab जैसा है, तो आउटपुट 4 होगा, क्योंकि हम इन स्ट्रिंग्स को बना सकते हैं -

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

    मान लीजिए कि हमारे पास एक नंबर स्टार्ट है और दूसरा नंबर एंड (स्टार्ट <एंड) है, हमें इन ऑपरेशंस का उपयोग करके स्टार्ट टू एंड को कन्वर्ट करने के लिए आवश्यक ऑपरेशंस की न्यूनतम संख्या ज्ञात करनी होगी - 1 से वृद्धि 2 से गुणा करें इसलिए, यदि इनपुट प्रारंभ =5, अंत =11 जैसा है, तो आउटपुट 2 होगा, क्योंकि

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

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