ধরুন আমরা একটি ছোট হাতের স্ট্রিং s আছে. একটি অক্ষর মুছে ফেলার পরে সমস্ত অক্ষরের ফ্রিকোয়েন্সি একই কিনা তা আমাদের পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি s ="abbc" এর মত হয়, তাহলে আউটপুটটি True হবে কারণ আমরা একটি b মুছে ফেলতে পারি স্ট্রিং "abc" পেতে যেখানে প্রতিটি উপাদানের ফ্রিকোয়েন্সি 1।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- ঘটনা :=s এর সমস্ত অক্ষর এবং তাদের ফ্রিকোয়েন্সি সহ একটি মানচিত্র
- যদি s-এর সমস্ত অক্ষরের উপস্থিতি একই হয়, তাহলে
- সত্য ফেরান
- s এর প্রতিটি অক্ষরের জন্য, করুন
- ঘটনা[চর] :=সংঘটন[চর] - ১
- যদি s-এর সমস্ত অক্ষরের উপস্থিতি একই হয়, তাহলে
- সত্য ফেরান
- ঘটনা[চর] :=সংঘটন[চর] + ১
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from collections import defaultdict def allSame(occurrence): counts = list(occurrence.values()) return all(element == counts[0] for element in counts) def solve(s): occurrence = defaultdict(int) for char in s: occurrence[char] += 1 if allSame(occurrence): return True for char in s: occurrence[char] -= 1 if allSame(occurrence): return True occurrence[char] += 1 return False s = "abbc" print(solve(s))
ইনপুট
"abbc"
আউটপুট
True