मान लीजिए हमारे पास एक स्ट्रिंग s है। हमें इस स्ट्रिंग को रन लेंथ एन्कोडिंग फॉर्म में कम्प्रेस करना है। तो जब कोई वर्ण लगातार k बार दोहराया जाता है जैसे 'bbbb' यहां अक्षर 'b' लगातार चार बार दोहराया गया है, तो एन्कोडेड फॉर्म 'b4' होगा। एकल वर्णों के लिए हम उसमें काउंट नहीं जोड़ेंगे।
उदाहरण के लिए, यदि इनपुट s = "abbbaaaaaaccdaaab" है, तो आउटपुट ab3a6c2da3b होगा।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- res := खाली स्ट्रिंग
- cnt := 1
- i के लिए 1 से s के आकार - 1 तक की रेंज में, करें
- यदि s[i-1], s[i] के समान है, तो
- cnt := cnt + 1
- अन्यथा,
- res := res + s[i-1]
- यदि cnt > 1, तो
- res := res + cnt
- cnt := 1
- यदि s[i-1], s[i] के समान है, तो
- res := res + s का अंतिम वर्ण
- यदि cnt > 1, तो
- res := res + cnt
- res लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
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