ধরুন আমরা নাম বলা 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']