मान लीजिए कि हमारे पास एक स्ट्रिंग s है। हमें इस स्ट्रिंग को रन लेंथ एन्कोडिंग फॉर्म में संपीड़ित करना होगा। इसलिए जब किसी वर्ण को k संख्या को लगातार 'bbbb' की तरह दोहराया जाता है, तो अक्षर 'b' को लगातार चार बार दोहराया जाता है, इसलिए एन्कोडेड रूप 'b4' होगा। एकल वर्णों के लिए हम इसमें गिनती नहीं जोड़ेंगे।
इसलिए, यदि इनपुट s ="abbbaaaaaaacdaaab" जैसा है, तो आउटपुट ab3a6c2da3b
होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- res:=रिक्त स्ट्रिंग
- सीएनटी:=1
- i के लिए 1 से लेकर s-1 के आकार तक के लिए
- यदि s[i - 1], s[i] के समान है, तो
- सीएनटी:=सीएनटी + 1
- अन्यथा,
- res :=res concatenate s[i - 1]
- अगर cnt> 1, तो
- res :=res concatenate cnt
- सीएनटी:=1
- यदि s[i - 1], s[i] के समान है, तो
- res :=res + s का अंतिम वर्ण
- अगर cnt> 1, तो
- res :=res concatenate cnt
- रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(s): res = "" cnt = 1 for i in range(1, len(s)): if s[i - 1] == s[i]: cnt += 1 else: res = res + s[i - 1] if cnt > 1: res += str(cnt) cnt = 1 res = res + s[-1] if cnt > 1: res += str(cnt) return res s = "abbbaaaaaaccdaaab" print(solve(s))
इनपुट
"abbbaaaaaaccdaaab"
आउटपुट
ab3a6c2da3b