अक्षरों की एक श्रृंखला को देखते हुए, इसे निम्नलिखित एल्गोरिदम का उपयोग करके संपीड़ित करें:
संपीड़ित स्ट्रिंग एस को अलग से वापस नहीं किया जाना चाहिए, बल्कि, इनपुट कैरेक्टर ऐरे वर्णों में संग्रहीत किया जाना चाहिए। ध्यान दें कि जिस समूह की लंबाई 10 या उससे अधिक है, उसे वर्णों में कई वर्णों में विभाजित किया जाएगा।
इनपुट सरणी को संशोधित करने के बाद, सरणी की नई लंबाई लौटाएं।
आपको एक एल्गोरिदम लिखना होगा जो केवल निरंतर अतिरिक्त स्थान का उपयोग करता है।
इस समस्या को हल करने के लिए, हमें वर्तमान चरित्र और उसकी गिनती पर नज़र रखते हुए सरणी के माध्यम से पुनरावृत्त करने की आवश्यकता है। जब हमें कोई नया वर्ण मिलता है, तो हम वर्तमान वर्ण और उसकी संख्या (यदि 1 से अधिक हो) को सरणी में जोड़ देते हैं। हमें यह सुनिश्चित करने की आवश्यकता है कि हम अंतरिक्ष जटिलता की आवश्यकता को पूरा करने के लिए ऐसा करें।
ब्रूट फोर्स समाधान में इनपुट सरणी के संपीड़ित संस्करण को संग्रहीत करने के लिए एक नई सरणी बनाना शामिल है। यह स्थान कुशल नहीं है लेकिन हमें इसमें शामिल चरणों को समझने में मदद करता है।
function compressBruteForce(chars: string[]): number { const n = chars.length; let compressed: string[] = []; let i = 0; while (i 1) { compressed.push(...count.toString().split('')); } } for (let j = 0; jसमय जटिलता विश्लेषण:
क्रूर बल समाधान स्थान कुशल नहीं है और केवल निरंतर अतिरिक्त स्थान का उपयोग करने की बाधा को पूरा नहीं करता है।
अनुकूलित समाधान में संपीड़ित संस्करण को संग्रहीत करने के लिए इनपुट सरणी को संशोधित करना शामिल है। हम दो पॉइंटर्स का उपयोग करते हैं: एक इनपुट ऐरे को पढ़ने के लिए और दूसरा संपीड़ित आउटपुट लिखने के लिए।
function compress(chars: string[]): number { let writeIndex = 0; let i = 0; while (i 1) { let countStr = count.toString(); for (let j = 0; jसमय जटिलता विश्लेषण:
console.log(compressBruteForce(["a","a","b","b","c","c","c"])); // 6, ["a","2","b","2","c","3"] console.log(compressBruteForce(["a"])); // 1, ["a"] console.log(compressBruteForce(["a","b","b","b","b","b","b","b","b","b","b","b","b"])); // 4, ["a","b","1","2"] console.log(compressBruteForce(["a","a","a","a","a","a","a","a","a","a"])); // 3, ["a","1","0"] console.log(compressBruteForce(["a","b","c"])); // 3, ["a","b","c"] console.log(compress(["a","a","b","b","c","c","c"])); // 6, ["a","2","b","2","c","3"] console.log(compress(["a"])); // 1, ["a"] console.log(compress(["a","b","b","b","b","b","b","b","b","b","b","b","b"])); // 4, ["a","b","1","2"] console.log(compress(["a","a","a","a","a","a","a","a","a","a"])); // 3, ["a","1","0"] console.log(compress(["a","b","c"])); // 3, ["a","b","c"]
स्ट्रिंग हेरफेर:
इन-प्लेस एल्गोरिदम:
ऐसी समस्याओं और रणनीतियों का अभ्यास करके, आप अपने समस्या-समाधान कौशल में सुधार कर सकते हैं और विभिन्न कोडिंग चुनौतियों के लिए बेहतर ढंग से तैयार हो सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3