मान लीजिए हमारे पास एक स्ट्रिंग s है। हमें रन-लेंथ एन्कोडिंग तकनीक का उपयोग करके इसे एन्कोड करना होगा। जैसा कि हम जानते हैं, रन-लेंथ एन्कोडिंग स्ट्रिंग्स को एन्कोड करने का एक तेज और सरल तरीका है। विचार इस प्रकार है - दोहराए गए क्रमिक तत्वों (वर्णों) को एकल गणना और वर्ण के रूप में।
उदाहरण के लिए, यदि इनपुट है s = "BBBBAAADDCBB", तो आउटपुट होगा "4B3A2D1C2B"
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- res := खाली स्ट्रिंग
- tmp := s का पहला वर्ण
- count := 1
- i के लिए 1 से s के आकार तक की रेंज में, करें
- यदि s[i], tmp के समान नहीं है, तो
- res := res के साथ count के साथ tmp को जोड़ें
- tmp := s[i]
- count := 1
- अन्यथा,
- count := count + 1
- यदि s[i], tmp के समान नहीं है, तो
- res के साथ count के साथ tmp को जोड़कर वापस करें
বेहतर বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখুন:
উদাহরণ
class Solution: def solve(self, s): res = "" tmp = s[0] count = 1 for i in range(1,len(s)): if s[i] != tmp: res += str(count) + tmp tmp = s[i] count = 1 else: count += 1 return res + str(count) + tmp ob = Solution() print(ob.solve("BBBBAAADDCBB"))ইনপুট
"BBBBAAADDCBB"
আউটপুট
4B3A2D1C2B