इस लेख में, हमें एक संख्या n दी गई है, और हमें दी गई संख्या में रिपीटेड डिजिट्स को हटाने की आवश्यकता है।
Input: x = 12224 Output: 124 Input: x = 124422 Output: 1242 Input: x = 11332 Output: 132
दी गई समस्या में, हम सभी डिजिट्स के माध्यम से जाएंगे और रिपीटिंग डिजिट्स को हटाएंगे।
समाधान खोजने का दृष्टिकोण
दिए गए दृष्टिकोण में, हम n के सभी डिजिट्स के माध्यम से दाएं से बाएं जाएंगे। अब हम n के मॉड को 10 से लेकर और फिर n को 10 से विभाजित करके n के डिजिट्स के माध्यम से जाते हैं। अब हमारा वर्तमान डिजिट n मॉड 10 है। हम इसकी तुलना पिछले डिजिट से करते हैं। यदि डिजिट्स समान हैं, तो हम n को ट्रैवर्स करते हैं। यदि वे समान नहीं हैं, तो हम इस डिजिट को अपनी नई संख्या में जोड़ते हैं, पिछले डिजिट को वर्तमान में बदलते हैं, और लूप जारी रखते हैं।
उदाहरण
#include <bits/stdc++.h> #define MOD 1000000007 using namespace std; int main() { int n = 1222333232; // दिया गया n int new_n = 0; // नई संख्या int po = 1; // नए डिजिट्स के लिए दस का गुणक होगा int prev = -1; // पिछला डिजिट int curr; // वर्तमान डिजिट while(n) { curr = n % 10; if(prev != curr) { // यदि एक डिजिट रिपीट नहीं होता है तो हम इस ब्लॉक में जाते हैं new_n = new_n + (curr * po); // हम नए डिजिट को new_n में जोड़ते हैं po *= 10; prev = curr; } n /= 10; } cout << new_n << "\n"; return 0; }आउटपुट
123232
उपरोक्त कोड की व्याख्या
उपरोक्त दृष्टिकोण में, हम केवल n के डिजिट्स के माध्यम से ट्रैवर्स कर रहे हैं अब जब हमारा पिछला डिजिट और वर्तमान डिजिट मेल नहीं खाते, तो हम ऐसे डिजिट को अपनी नई संख्या में जोड़ते हैं, और जैसे ही हमारा डिजिट जुड़ता है, हम po को भी बढ़ाते हैं, जिसका उपयोग हमारे डिजिट्स की पोजीशन के लिए किया जा रहा है अब यदि हमारे वर्तमान और पिछले डिजिट मेल खाते हैं-हम इस ब्लॉक को नहीं चलाते और लूप को तब तक जारी रखते हैं जब तक हमारा n 0 नहीं हो जाता।
निष्कर्ष
इस लेख में, हम दी गई संख्या में रिपीटेड डिजिट्स को हटाने की समस्या को हल करते हैं। हमने इस समस्या के लिए C++ प्रोग्राम और पूर्ण दृष्टिकोण (सामान्य) भी सीखा जिसके द्वारा हमने इस समस्या को हल किया। हम इसी प्रोग्राम को C, Java, Python और अन्य भाषाओं में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगा होगा।