একটি লোয়ারকেস অ্যারে দেওয়া আছে। আমাদের কাজ হলো স্ট্রিংয়ের সর্বোচ্চ সাবসেটের আকার বের করা যেগুলো একে অপরের অ্যানাগ্রাম। অ্যানাগ্রাম মানে একটি স্ট্রিং অন্য স্ট্রিং-এর অ্যানাগ্রাম হলে দ্বিতীয়টি শুধু প্রথমটির পুনর্বিন্যাস। এখানে Counter() মেথড ব্যবহার করে এই সমস্যা দ্রুত সমাধান করা যায়।
উদাহরণস্বরূপ, 'python' এবং 'typhon' স্ট্রিংদুইটি অ্যানাগ্রাম।
অ্যালগরিদম
ধাপ ১: স্পেস দিয়ে আলাদা করা ইনপুট স্ট্রিংকে শব্দে বিভক্ত করুন। ধাপ ২: দেওয়া স্ট্রিং লিস্টের প্রতিটি স্ট্রিং সর্ট করুন। ধাপ ৩: এখন Counter মেথড ব্যবহার করে একটি ডিকশনারি তৈরি করুন যেটে স্ট্রিংগুলো কী হিসেবে থাকবে এবং তাদের ফ্রিকোয়েন্সি ভ্যালু হিসেবে থাকবে। ধাপ ৪: max ফাংশন ব্যবহার করে ফ্রিকোয়েন্সির সর্বোচ্চ মান বের করুন।
উদাহরণ কোড
# অ্যানাগ্রাম শব্দের সর্বোচ্চ সাবসেটের আকার বের করার ফাংশন from collections import Counter def largestana(str1): # স্পেস দিয়ে আলাদা করা ইনপুট স্ট্রিংকে শব্দে বিভক্ত str1 = str1.split(" ") # দেওয়া লিস্টের প্রতিটি স্ট্রিং সর্ট করুন for i in range(0,len(str1)): str1[i]=''.join(sorted(str1[i])) # Counter মেথড ব্যবহার করে ডিকশনারি তৈরি # যেটে স্ট্রিং কী এবং ফ্রিকোয়েন্সি ভ্যালু newstr1 = Counter(str1) # ফ্রিকোয়েন্সির সর্বোচ্চ মান প্রিন্ট print ("The Size Of largest subset of Anangram word is ::>",max(newstr1.values())) # ড্রাইভার প্রোগ্রাম if __name__ == "__main__": str1 = input("Enter the string ::>") largestana(str1) আউটপুট
Enter the string ::>qwe ewq rty ytr ytr ytr The Size Of largest subset of Anangram word is ::> 4