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

पायथन में रन-लेंथ स्ट्रिंग डिकोडिंग इटरेटर क्लास का कार्यान्वयन


मान लीजिए हम एक इटरेटर क्लास परिभाषित करना चाहते हैं जो रन-लेंथ एन्कोडेड लोअरकेस स्ट्रिंग s से निर्मित होता है। इस इटरेटर के लिए दो फ़ंक्शन हैं:

  • next() - इटरेटर में अगला एलिमेंट ढूंढता है
  • hasnext() - जांचता है कि अगला एलिमेंट मौजूद है या नहीं

उदाहरण के लिए, यदि इनपुट s = "2b1a" है, तो इस s के साथ एक ऑब्जेक्ट बनाएं, फिर next(), hasnext(), next(), next(), hasnext() कॉल करें, तो आउटपुट होगा "b", True, "b", "a", False।

समाधान दृष्टिकोण

  • एक कंस्ट्रक्टर परिभाषित करें जो s लेता है
  • output := एक नई सूची
  • num := खाली स्ट्रिंग
  • s में प्रत्येक कैरेक्टर i के लिए:
    • यदि i अल्फाबेटिक है, तो:
      • output के अंत में num जोड़ें
      • output के अंत में i जोड़ें
      • num := खाली स्ट्रिंग
    • अन्यथा:
      • num := num + i
  • next() फ़ंक्शन परिभाषित करें:
    • यदि hasnext() true है, तो:
      • count := output[0]
      • letter := output[1]
      • count := count - 1
      • यदि count > 0, तो output[0] := output[0] - 1
      • अन्यथा, output := output[इंडेक्स 2 से अंत तक]
      • letter लौटाएं
  • hasnext() फ़ंक्शन परिभाषित करें:
    • यदि output का आकार 0 नहीं है, तो True लौटाएं
    • False लौटाएं

उदाहरण कोड

class RunLengthIterator:
    def __init__(self, s):
        self.output = []
        num = ""
        for i in s:
            if i.isalpha():
                self.output.append(int(num))
                self.output.append(i)
                num = ""
            else:
                num += i
    def next(self):
        if self.hasnext():
            count = self.output[0]
            letter = self.output[1]
            count -= 1
            if count > 0:
                self.output[0] -= 1
            else:
                self.output = self.output[2:]
            return letter
    def hasnext(self):
        if len(self.output) != 0:
            return True
        return False

s = "2b1a"
obj = RunLengthIterator(s)
print(obj.next())
print(obj.hasnext())
print(obj.next())
print(obj.next())
print(obj.hasnext())

इनपुट

"2b1a" obj = RunLengthIterator(s) obj.next() obj.hasnext() obj.next() obj.next() obj.hasnext()

आउटपुट

b True b a False
  1. Python Program कैसे चलाएं? Python Program कैसे चलाएं?

    Code लिखने के बाद, हमें code को execute करके output प्राप्त करने के लिए run करने की आवश्यकता होती है। Program चलाने पर, हम जांच सकते हैं कि लिखा गया code सही है और desired output produce करता है। Python program चलाना काफी आसान काम है। IDLE पर चलाएं IDLE पर python program चलाने के लिए, दिए गए steps क

  1. पायथन प्रोग्राम: स्ट्रिंग में इवन लेंथ वाले शब्द प्रिंट करें पायथन प्रोग्राम: स्ट्रिंग में इवन लेंथ वाले शब्द प्रिंट करें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग दिए जाने पर, हमें स्ट्रिंग में इवन लेंथ वाले सभी शब्दों को प्रदर्शित करने की आवश्यकता है। दृष्टिकोण split() फ़ंक्शन का उपयोग करके इनपुट स्ट्रिंग को विभाजित करें। for लूप

  1. - पायथन में इटरेटर फंक्शन

    व्याख्याइटरेटर पायथन में एक ऑब्जेक्ट है जो इटरेशन प्रोटोकॉल को लागू करता है। टपल्स, लिस्ट्स, सेट्स पायथन में इनबिल्ट इटरेटर्स कहलाते हैं। इटरेशन प्रोटोकॉल में दो प्रकार के मेथड होते हैं।__iter__(): यह मेथड तब कॉल होता है जब हम एक इटरेटर इनिशियलाइज़ करते हैं और यह एक ऑब्जेक्ट लौटाना चाहिए जिसमें next