मान लीजिए कि हमारे पास लॉग की एक सरणी है। उस सरणी में प्रत्येक प्रविष्टि शब्दों का एक सीमित स्थान है। प्रत्येक लॉग में पहला शब्द अल्फ़ान्यूमेरिक पहचानकर्ता है। फिर, नीचे की तरह विभिन्न प्रकार के तार होते हैं -
- आईडी के बाद प्रत्येक शब्द में केवल छोटे अक्षर होंगे;
- आईडी के बाद प्रत्येक शब्द में केवल अंक होंगे।
हम इन दो प्रकार के लॉग्स को क्रमशः लेटर-लॉग्स और डिजिट-लॉग्स कहेंगे। और ti की गारंटी है कि प्रत्येक लॉग में उसकी आईडी के बाद कम से कम एक शब्द होता है।
हमें लॉग्स को फिर से व्यवस्थित करना होगा ताकि सभी लेटर-लॉग्स किसी भी डिजिट-लॉग से पहले रहें। और लेटर-लॉग्स को लेक्सिकोग्राफिक रूप से पहचानकर्ता को अनदेखा करने का आदेश दिया जाता है, जिसमें संबंधों के मामले में उपयोग किए जाने वाले पहचानकर्ता होते हैं। अंत में, अंक-लॉग को उनके मूल क्रम में रखा जाना चाहिए। इसलिए हमें लॉग का अंतिम क्रम वापस करना होगा।
इसलिए, यदि इनपुट लॉग की तरह है =["dig1 9 2 5 2", "let1 art can", "dig2 4 8", "let2 खुद किट डिग", "let3 आर्ट जीरो"], तो आउटपुट होगा [ "let1 art can","let3 art Zero",,"let2 own kit dig",,"dig1 9 2 52",,"dig2 4 8"]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- शब्द:=एक नई सूची
- अंक:=एक नई सूची
- प्रत्येक लॉग इन लॉग के लिए, करें
- s :=लॉग के शब्दों की एक सूची
- यदि दूसरा शब्द एक अंक है, तो
- अंकों के अंत में लॉग डालें
- अन्यथा,
- रिक्त स्थान से अलग करके s के प्रत्येक तत्व में शामिल हों और अंत में शब्द सरणी में डालें
- words =फिर शब्दों को लेक्सिकोग्राफिक रूप से क्रमबद्ध करें
- शब्द:=रिक्त स्थान से अलग करके शब्द सरणी के प्रत्येक तत्व में शामिल हों और स्ट्रिंग्स की एक सूची बनाएं
- दो सूचियों वाले शब्दों और अंकों को मर्ज करें, फिर वापस आएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def reorderLogFiles(self, logs): words = [] nums = [] for log in logs: s = log.split() if s[1].isdigit(): nums.append(log) else: words.append((s[0], ' '.join(s[1:]))) words = sorted(words, key=lambda x: (x[1],x[0])) words = [' '.join(w) for w in words] return words + nums ob = Solution() print(ob.reorderLogFiles(["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"]))
इनपुट
["dig1 9 2 5 2","let1 art can","dig2 4 8","let2 own kit dig","let3 art zero"]
आउटपुट
['let1 art can', 'let3 art zero', 'let2 own kit dig', 'dig1 9 2 5 2', 'dig24 8']