java - Removing duplicate character from array -
कोडिंग साक्षात्कार को क्रैकिंग नामित एक किताब पढ़ते हुए
Gayle Laakmann
, मैं इस प्रश्न पर आया
किसी अतिरिक्त बफर का उपयोग किए बिना स्ट्रिंग में डुप्लिकेट वर्णों को निकालने के लिए एक एल्गोरिथम डिजाइन और कोड लिखें। नोट: एक या दो अतिरिक्त चर ठीक हैं सरणी की एक अतिरिक्त प्रतिलिपि नहीं है।
और यह कोड: -
सार्वजनिक स्थिर शून्य निकालना डुप्लिकेट (चार [] str) {if (str = = नल) {वापसी; } Int len = str.length; यदि (लेन और लेफ्टिनेंट; 2) {वापसी; } इंटर्न पूंछ = 1; के लिए (int i = 1; i & lt; len; ++ i) {int j; (जे = 0; जे एंड एलटी; पूंछ; ++ जे) के लिए {if (str [i] == str [j]) {break; }} यदि (जे == पूंछ) {str [पूंछ] = स्ट्र [i]; ++ पूंछ; }} Str [पूंछ] = 0; }
जो सरणी से डुप्लिकेट वर्ण को निकालना माना जाता है। मुझे चुप नहीं लगता है कि एल्गोरिथ्म एक ही चरित्र को फिर से दोबारा बदलकर क्या कर रहा है। मैंने सोचा कि यह केवल मुझे ही लगता है कि एल्गोरिथ्म काम नहीं कर रहा है, लेकिन वास्तव में जब मैंने यह कोड चलाया तो यह मुझे गलत आउटपुट दे रहा है। किताब में यह गंभीर त्रुटि है या क्या मुझे सवाल समझ में नहीं आ रहा है?
बचे हुए पात्रों को समाशोधन निम्नलिखित कोड बदल गया है और यह काम करता है: नोट: बदली:
str [पूंछ] = 0;
के साथ:
<पूर्व> के लिए (; पूंछ और लेफ्टिनेंट; पूंछ ++) {str [पूंछ] = 0; }
सार्वजनिक स्थिर शून्य निकालना डुप्लिकेट (चार [] str) {if (str == null) {return; } Int len = str.length; यदि (लेन और लेफ्टिनेंट; 2) {वापसी; } इंटर्न पूंछ = 1; के लिए (int i = 1; i & lt; len; ++ i) {int j; (जे = 0; जे एंड एलटी; पूंछ; ++ जे) के लिए {if (str [i] == str [j]) {break; }} यदि (जे == पूंछ) {str [पूंछ] = स्ट्र [i]; ++ पूंछ; }} के लिए (; पूंछ और लेफ्टिनेंट; लेना; पूंछ ++) {str [पूंछ] = 0; }}
Comments
Post a Comment