मान लीजिए कि हमारे पास एक स्ट्रिंग s है। s एक रन-लेंथ एन्कोडेड स्ट्रिंग है, हमें इसका डिकोडेड वर्जन ढूंढना होगा। जैसा कि हम जानते हैं, रन-लेंथ एन्कोडिंग स्ट्रिंग्स को एन्कोडिंग करने का एक तेज़ और सरल तरीका है। विचार इस प्रकार है - एक ही गिनती और चरित्र के रूप में दोहराए गए क्रमिक तत्व (अक्षर)। उदाहरण के लिए, यदि स्ट्रिंग "BBBBAAADDCBB" की तरह है तो उसे "4B3A2D1C2B" के रूप में एन्कोड किया जाएगा।
इसलिए, यदि इनपुट s ="4B3A2D1C2B" जैसा है, तो आउटपुट "BBBBAAADDCBB" होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- आउटपुट:=खाली स्ट्रिंग
- संख्या:=रिक्त स्ट्रिंग
- प्रत्येक वर्ण के लिए मैं s में, do
- अगर मैं वर्णमाला है, तो
- आउटपुट:=आउटपुट + i*(संख्या के रूप में संख्या)
- संख्या:=रिक्त स्ट्रिंग
- अन्यथा,
- संख्या:=संख्या + मैं
- अगर मैं वर्णमाला है, तो
- रिटर्न आउटपुट
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s): output = "" num="" for i in s: if i.isalpha(): output+=i*int(num) num="" else: num+=i return output ob = Solution() print(ob.solve("4B3A2D1C2B"))लौटाता हूं
इनपुट
"4B3A2D1C2B"
आउटपुट
BBBBAAADDCBB