मान लीजिए हमारे पास n स्ट्रिंग्स की एक सरणी names है। हमें फाइल सिस्टम में n डायरेक्टरी बनानी हैं जैसे कि, iवें मिनट में, हम names[i] नाम से एक डायरेक्टरी बनाएंगे। दो फाइलों का नाम समान नहीं हो सकता, यदि हम डुप्लिकेट डायरेक्टरी नाम दर्ज करते हैं तो सिस्टम उसके नाम में (k) रूप में सफ़िक्स जोड़ देगा, यहां k सबसे छोटा सकारात्मक पूर्णांक है जिससे प्राप्त नाम अद्वितीय रहे। हमें लंबाई n की स्ट्रिंग्स की एक सरणी ढूंढनी है जहां ans[i] वह वास्तविक नाम है जो ith डायरेक्टरी को बनाने पर असाइन किया जाएगा।
उदाहरण के लिए, यदि इनपुट names = ["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"] है, तो आउटपुट ['my_dir', 'my_dir(1)', 'my_new_dir', 'my_new_dir(1)', 'abc'] होगा क्योंकि "my_new_dir" पहले से मौजूद है, फिर पहले के बाद (1) जोड़ा जाता है।
हल करने के चरण
dic := एक नया मैप, यदि कोई कुंजी मौजूद नहीं है तो 0 वापस करें
res := एक नई सूची
names में प्रत्येक name के लिए, करें
यदि name, dic में नहीं है, तो
dic[name] := dic[name] + 1
name को res के अंत में डालें
अन्यथा,
newname := name + '(' + dic[name] + ')'
जब तक newname, dic में मौजूद है, करें
dic[name] := dic[name] + 1
newname := name + '(' + dic[name] + ')'
dic[newname] := 1
newname को res के अंत में डालें
res वापस करें
उदाहरण
from collections import defaultdict
def solve(names):
dic = defaultdict(int)
res = []
for name in names:
if name not in dic:
dic[name] += 1
res.append(name)
else:
newname = name + '(' + str(dic[name]) + ')'
while newname in dic:
dic[name] += 1
newname = name + '(' + str(dic[name]) + ')'
dic[newname] = 1
res.append(newname)
return res
names = ["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]
print(solve(names))
इनपुट
["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]
आउटपुट
['my_dir', 'my_dir(1)', 'my_new_dir', 'my_new_dir(1)', 'abc']