मान लीजिए कि हमारे पास एक स्ट्रिंग s है। हमें रन-लेंथ एन्कोडिंग तकनीक का उपयोग करके इसे एन्कोड करना होगा। जैसा कि हम जानते हैं, रन-लेंथ एन्कोडिंग स्ट्रिंग्स को एन्कोडिंग करने का एक तेज़ और सरल तरीका है। विचार इस प्रकार है - दोहराए जाने वाले क्रमिक तत्व (अक्षर) एकल गणना और वर्ण के रूप में।
इसलिए, यदि इनपुट s ="BBBBAAADDCBB" जैसा है, तो आउटपुट "4B3A2D1C2B" होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- res:=रिक्त स्ट्रिंग
- tmp :=s का पहला अक्षर
- गिनती :=1
- i श्रेणी 1 से s के आकार के लिए, करें
- यदि s[i] tmp के समान नहीं है, तो
- res :=res concatenate count concatenate tmp
- tmp :=s[i]
- गिनती :=1
- अन्यथा,
- गिनती :=गिनती + 1
- यदि s[i] 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