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

पायथन में समान सिरों को हटाने के बाद स्ट्रिंग की न्यूनतम लंबाई खोजने का कार्यक्रम

मान लीजिए कि हमारे पास केवल तीन वर्ण 'ए', 'बी' और 'सी' के साथ एक स्ट्रिंग है। हम निम्नलिखित एल्गोरिथम को कितनी भी बार स्ट्रिंग पर लागू करेंगे -

  • s से एक गैर-रिक्त उपसर्ग का चयन करें जहां उपसर्ग के सभी वर्ण समान हों।

  • s से एक गैर-रिक्त प्रत्यय का चयन करें जहाँ प्रत्यय के सभी वर्ण समान हों।

  • उपसर्ग और प्रत्यय संयुक्त हैं।

  • उपसर्ग और प्रत्यय के वर्ण समान होने चाहिए।

  • उपसर्ग और प्रत्यय दोनों को s से हटा दें।

अंत में, हमें उपरोक्त ऑपरेशन को कितनी भी बार (संभवतः शून्य बार) करने के बाद s की न्यूनतम लंबाई ज्ञात करनी होगी।

इसलिए, यदि इनपुट s ="aabccabba" जैसा है, तो आउटपुट 3 होगा क्योंकि हम पहले उपसर्ग ="aa" और प्रत्यय ="a" का चयन कर सकते हैं, ताकि हटाने के बाद स्ट्रिंग "bccabb" हो, फिर उपसर्ग ="बी" और प्रत्यय "बीबी" का चयन करें, इसलिए हटाने के बाद स्ट्रिंग "सीसीए" है, जिसकी लंबाई 3 है।

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

  • s :=s के साथ एक कतार बनाएं

  • जबकि s> 1 और s[0] का आकार s का अंतिम तत्व है, करें

    • chk :=s[0]

    • जबकि s और s[0] समान हैं, करें

      • s से बायां तत्व हटाएं

    • जबकि s खाली नहीं है और s का अंतिम तत्व chk के समान है, करें

      • s से अंतिम तत्व हटाएं

  • s का वापसी आकार

उदाहरण

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

from collections import deque
def solve(s):
   s = deque(s)
   while len(s) > 1 and s[0] == s[-1]:
      chk = s[0]
      while s and s[0] == chk:
         s.popleft()
      while s and s[-1] == chk:
         s.pop()
   return len(s)

s = "aabccabba"
print(solve(s))

इनपुट

"aabccabba"

आउटपुट

3

  1. न्यूनतम संख्या रंग खोजने का कार्यक्रम पायथन में विलय के बाद रहता है

    मान लीजिए हमारे पास रंगों की एक सूची है (आर, जी, बी)। अब अगर दो अलग-अलग रंग एक-दूसरे के बगल में हों तो वे तीसरे रंग की एक ही रंग की वस्तु में बदल सकते हैं। हमें ऐसे परिवर्तनों के किसी भी संभावित क्रम के बाद शेष बची सबसे छोटी संख्या ज्ञात करनी होगी। इसलिए, यदि इनपुट रंग =[G, R, G, B, R] जैसा है, तो

  1. पायथन में अद्वितीय पात्रों की श्रृंखलाबद्ध स्ट्रिंग की लंबाई खोजने के लिए कार्यक्रम?

    मान लीजिए हमारे पास स्ट्रिंग शब्दों की एक सूची है। हमें एक स्ट्रिंग बनानी है जो शब्दों के बाद के क्रम को जोड़कर बनाई गई है जैसे कि प्रत्येक अक्षर अद्वितीय है। हमें अंत में इस तरह के सबसे लंबे संयोजन की लंबाई का पता लगाना होगा। इसलिए, यदि इनपुट शब्द =[xyz, xyw, wab, cde] जैसा है, तो आउटपुट 9 होगा, क

  1. पायथन में हानिपूर्ण रन-लेंथ एन्कोडिंग की न्यूनतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक लोअरकेस स्ट्रिंग s और दूसरा मान k है। अब एक ऑपरेशन पर विचार करें जहां हम एक स्ट्रिंग पर एक रन-लेंथ एन्कोडिंग करते हैं, जिसमें बार-बार आने वाले वर्णों को एकाउंट और कैरेक्टर के रूप में रखा जाता है। तो यदि स्ट्रिंग aaabbc की तरह है तो उसे 3a2bc के रूप में एन्कोड किया जाएगा। यह