मान लीजिए हमारे पास लॉग्स की एक सरणी है। उस सरणी में प्रत्येक प्रविष्टि शब्दों का एक स्पेस-डिलिमिटेड स्ट्रिंग है। प्रत्येक लॉग में पहला शब्द एक अल्फ़ान्यूमेरिक पहचानकर्ता है। फिर, विभिन्न प्रकार के स्ट्रिंग्स हैं जैसे -
- आईडी के बाद प्रत्येक शब्द केवल लोअरकेस अक्षरों से मिलकर बनेगा;
- आईडी के बाद प्रत्येक शब्द केवल अंकों से मिलकर बनेगा।
हम इन दो प्रकार के लॉग्स को क्रमशः लेटर-लॉग्स और डिजिट-लॉग्स कहेंगे। और यह गारंटी है कि प्रत्येक लॉग में अपने आईडी के बाद कम से कम एक शब्द है।
हमें लॉग्स को पुनर्क्रमित करना होगा ताकि सभी लेटर-लॉग्स किसी भी डिजिट-लॉग से पहले रहें। और लेटर-लॉग्स पहचानकर्ता को अनदेखा करके लेक्सिकोग्राफिकली क्रमबद्ध हैं, टाई के मामले में पहचानकर्ता का उपयोग किया जाता है। अंत में, डिजिट-लॉग्स को उनके मूल क्रम में रखा जाना चाहिए। तो हमें लॉग्स का अंतिम क्रम लौटाना होगा।
तो, यदि इनपुट logs = ["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","dig2 4 8"] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- words := एक नई सूची
- nums := एक नई सूची
- logs में प्रत्येक लॉग के लिए, करें
- s := लॉग के शब्दों की सूची
- यदि दूसरा शब्द अंक है, तो
- लॉग को nums के अंत में डालें
- अन्यथा,
- s के प्रत्येक तत्व को स्पेस से जोड़कर words सरणी के अंत में डालें
- words = फिर words सरणी को लेक्सिकोग्राफिकली सॉर्ट करें
- words := words सरणी के प्रत्येक तत्व को स्पेस से जोड़कर स्ट्रिंग्स की सूची बनाएं
- दो सूचियों words और nums को मर्ज करें, फिर लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें -
उदाहरण
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', 'dig2 4 8']