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

पायथन का उपयोग करके एक स्ट्रिंग को विभाजित करने के कई अच्छे तरीके खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक स्ट्रिंग s है। अब एक विभाजन को एक अच्छा विभाजन कहा जाता है जब हम s को 2 गैर-रिक्त स्ट्रिंग्स p और q में विभाजित कर सकते हैं जहाँ इसका संयोजन s के बराबर होता है और p और q में अलग-अलग अक्षरों की संख्या बराबर होती है। हमें यह ज्ञात करना है कि हम कितने अच्छे विभाजन कर सकते हैं।

इसलिए, यदि इनपुट s ="xxzxyx" जैसा है, तो आउटपुट 2 होगा क्योंकि बंटवारे के कई तरीके हैं लेकिन अगर हम ("xxz", "xyx") या ("xxzx", "yx") जैसे विभाजित होते हैं तो वे अच्छे हैं।

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

  • परिणाम:=0

  • बायां:=वस्तुओं की आवृत्ति गिनने के लिए एक खाली माल

  • दाएं:=प्रत्येक वर्ण की आवृत्ति को s में गिनें

  • प्रत्येक सी इन एस के लिए, करें

    • बाएं [सी]:=बाएं [सी] + 1

    • दाएं [सी]:=दाएं [सी] - 1

    • अगर सही [c] शून्य है, तो

      • दाएं हटाएं[c]

    • यदि बाएँ का आकार दाएँ के आकार के समान है, तो

      • परिणाम:=परिणाम + 1

  • वापसी परिणाम

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

उदाहरण

from collections import Counter
def solve(s):
   result = 0
   left, right = Counter(), Counter(s)
   for c in s:
      left[c] += 1
      right[c] -= 1
      if not right[c]:
         del right[c]
      if len(left) == len(right):
         result += 1
   return result
s = "xxzxyx"
print(solve(s))

इनपुट

"xxzxyx"

आउटपुट

2

  1. पायथन का उपयोग करके अच्छे लीफ नोड्स जोड़े की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। और दूसरा मान दूरी d. दो अलग-अलग लीफ नोड्स की एक जोड़ी को अच्छा कहा जाता है, जब इन दो नोड्स के बीच का सबसे छोटा रास्ता छोटा या दूरी d के समान होता है। तो, अगर इनपुट पसंद है और दूरी d =4, तो आउटपुट 2 होगा क्योंकि जोड़े (8,7) और (5,6) हैं क्योंकि उनकी पथ लं

  1. पायथन में पैलिंड्रोम को विभाजित करने के कई तरीकों को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग है, हमें स्ट्रिंग को विभाजित करने के तरीकों की संख्या का पता लगाना होगा जैसे कि प्रत्येक भाग एक पैलिंड्रोम हो। इसलिए, यदि इनपुट s =xyyx जैसा है, तो आउटपुट 3 होगा, क्योंकि हमारे पास विभाजन हैं:[x, yy, x], [x, y, y, x], [xyyx]। इसे हल करने के लिए, हम इन चरणों का प

  1. पायथन में एक संदेश को डिकोड करने के कई तरीकों को खोजने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास ए =1, बी =2, ... जेड =26 जैसी मैपिंग है, और हमारे पास एक एन्कोडेड संदेश संदेश स्ट्रिंग है, हमें इसे डिकोड करने के तरीकों की संख्या गिननी होगी। इसलिए, यदि इनपुट संदेश =222 जैसा है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है:बीबीबी, बीवी, और वीबी। इसे हल क