ধরুন আমরা নাম বলা n স্ট্রিং একটি অ্যারে আছে. আমাদের ফাইল সিস্টেমে n ডিরেক্টরি তৈরি করতে হবে যাতে, ith মিনিটে, আমরা নামের নামের [i] নামের একটি ডিরেক্টরি তৈরি করব। দুটি ফাইলের একই নাম থাকতে পারে না, যদি আমরা একটি ডুপ্লিকেট ডিরেক্টরির নাম লিখি তাহলে সিস্টেমের নামের সাথে (k) আকারে একটি প্রত্যয় যুক্ত হবে, এখানে, k হল ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা যাতে প্রাপ্ত নামটি অনন্য থাকে। আমাদের দৈর্ঘ্যের স্ট্রিংগুলির একটি অ্যারে খুঁজে বের করতে হবে যেখানে ans[i] হল আসল নাম যা ith ডিরেক্টরিতে বরাদ্দ করা হবে যখন আমরা এটি তৈরি করব।
সুতরাং, যদি ইনপুটটি নামের মত হয় =["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 :=একটি নতুন তালিকা
-
নামের প্রতিটি নামের জন্য, করুন
-
যদি নাম dic-এ না থাকে, তাহলে
-
dic[নাম] :=dic[নাম] + 1
-
res এর শেষে নাম সন্নিবেশ করুন
-
-
অন্যথায়,
-
newname :=name concatenate '(' concatenate dic[name] concatenate ')'
-
যখন নতুন নাম dic-এ উপস্থিত থাকে, do
-
dic[নাম] :=dic[নাম] + 1
-
newname :=name concatenate '(' concatenate dic[name] concatenate ')'
-
-
dic[নতুন নাম] :=1
-
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']