এখানে আমরা চেক করব একটি স্ট্রিং-এর দুটি অর্ধেকের ক্যারেক্টার সেট এবং ফ্রিকোয়েন্সি একই কিনা। স্ট্রিং-এর দৈর্ঘ্য বিজোড় হলে মাঝপথের ক্যারেক্টার বাদ দিয়ে চেক করব।
অ্যালগরিদম
১. একটি স্ট্রিং ইনিশিয়ালাইজ করুন।
২. একটি খালি ডিকশনারি alphabets তৈরি করুন।
৩. mid ভেরিয়েবল = দৈর্ঘ্য / ২।
৪. প্রথম অর্ধেকের জন্য লুপ:
৪.১. ক্যারেক্টারের কাউন্ট ১ দিয়ে ইনিশিয়ালাইজ বা ইনক্রিমেন্ট করুন।
৫. দ্বিতীয় অর্ধেকের জন্য লুপ (শেষ থেকে mid পর্যন্ত):
৫.১. ক্যারেক্টার ডিকশনারিতে আছে কিনা চেক করুন।
৫.১.১. থাকলে কাউন্ট ১ কমান।
৬. ডিকশনারির ভ্যালুগুলো চেক করুন:
৬.১. যেকোনো ভ্যালু ০ এর চেয়ে বড় হলে "No!" প্রিন্ট করুন।
৬.২. সব ০ হলে "Yes!" প্রিন্ট করুন।
উদাহরণ কোড
string = "aabccbaa"
alphabets = {}
mid = len(string) // 2
# প্রথম অর্ধেক: ফ্রিকোয়েন্সি কাউন্ট
for i in range(mid):
if not alphabets.get(string[i], 0):
alphabets[string[i]] = 1
else:
alphabets[string[i]] += 1
# দ্বিতীয় অর্ধেক: ফ্রিকোয়েন্সি ডিক্রিমেন্ট
for i in range(len(string) - 1, mid - 1, -1):
if alphabets.get(string[i], 0):
alphabets[string[i]] -= 1
# ফ্ল্যাগ চেক
flag = 1
for i in alphabets.values():
if i != 0:
print("No!")
flag = 0
break
if flag == 1:
print("Yes!")
আউটপুট
Yes!
উপসংহার
ডিকশনারি ব্যবহার করে দুটি অর্ধেকের ক্যারেক্টার ফ্রিকোয়েন্সি তুলনা করা যায়। প্রশ্ন থাকলে কমেন্ট করুন।