(कोई नेटवर्किंग ज्ञान आवश्यक नहीं है। यह पूरी तरह से स्ट्रिंग और सूचियां है)।जावा: प्रीफिक्स्ड स्ट्रिंग्स (ऐरेलिस्ट्स) की ट्रिकी सॉर्टिंग
कहें कि मेरे पास एक कार्य है, जो स्ट्रिंग आईपीवी 4 बिंदीदार पते की एक सूची स्वीकार करता है, और उन्हें आरोही क्रम में टाइप करता है। (वर्णमाला नहीं, सही आईपी लंबे प्रारूप सॉर्टिंग)। आइए इसे कॉल करें:
public static ArrayList<String> sortListOfIpv4s(ArrayList<String> unsortedIPv4s);
यह फ़ंक्शन पहले से ही सही तरीके से काम करता है। एक इनपुट को देखते हुए:
192.168.1.1, 8.8.8.8, 4.5.6.7, 244.244.244.244, 146.144.111.6
यह उत्पादन सूची जाएगा:।
4.5.6.7, 8.8.8.8, 146.144.111.6, 192.168.1.1, 244.244.244.244
(चलो यह जगह में सूची को संशोधित करने या एक नई सूची वापसी करना चाहिए कि क्या पर एक बहस में नहीं यह सिर्फ रिटर्न एक । नई सूची इसके अलावा, समारोह, क्योंकि कई कारणों से संशोधित नहीं किया जा सकता)
लेकिन, मेरा इनपुट सूची इस प्रकार है:।
e192.168.1.1, f8.8.8.8, e4.5.6.7, f244.244.244.244, e146.144.111.6
जब मैं उपसर्ग (केवल ई या एफ में से एक, अनिवार्य रूप से वैकल्पिक नहीं) को हटाता हूं और सॉर्टिंग फ़ंक्शन को पास करने के लिए एक साफ़ सरणी बना देता हूं, तो मैं उपसर्ग जानकारी खो देता हूं। क्या मैं चाहूँगा प्रकार का एक उत्पादन है:
e4.5.6.7, f8.8.8.8, e146.144.111.6, e192.168.1.1, f244.244.244.244
असल में, छँटाई करने से पहले, जो कुछ भी उपसर्ग अवर्गीकृत सूची में प्रत्येक तत्व के लिए मौजूद थे, एक ही उपसर्ग अनुसार क्रमबद्ध में तत्वों को फिर से जोड़ दिये जाने की आवश्यकता है सूची।
चेतावनियां:
- एक आईपी पता मूल सूची में दोहरा सकते हैं, दो बार
- की एक अधिकतम जब दो बार दोहरा, दो तत्वों में से प्रत्येक के एक ही उपसर्ग होगा, इसकी गारंटी
- छंटाई एल्गोरिदम डुप्लिकेट को नहीं हटाएगा।
कृपया थोड़ा एल्गोरिदमिक सहायता कृपया? (याद रखें, हमारे पास पहले से एक ऐसा फ़ंक्शन है जो स्वच्छ आईपीवी 4 स्ट्रिंग सरणीसूची को सॉर्ट कर सकता है)।
आप कह रहे हैं आप 'sortListOfIpv4s' एक ब्लैक बॉक्स के रूप में इलाज के लिए करना चाहते हैं? आपको इसे बदलने की अनुमति नहीं है? –
सटीक रूप से। टीम पर्यावरण, बड़ी टीम, और यह एक पुस्तकालय समारोह है जिसका मतलब प्रत्येक अद्वितीय उपयोग-मामले के लिए परिवर्तित नहीं है। –