ধরি আমাদের একটি লোয়ারকেস স্ট্রিং s আছে। আমাদের যাচাই করতে হবে একটি ক্যারেক্টার মুছে দিলে কি সব ক্যারেক্টারের ফ্রিকোয়েন্সি সমান হবে।
উদাহরণস্বরূপ, s = "abbc" হলে আউটপুট হবে True, কারণ একটি 'b' মুছে দিলে "abc" বাকি থাকবে যেখানে প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি ১।
সমাধানের ধাপসমূহ
- occurrence := s-এ থাকা সব ক্যারেক্টার ও ফ্রিকোয়েন্সির ম্যাপ
- যদি সব ক্যারেক্টারের ফ্রিকোয়েন্সি ইতিমধ্যে সমান হয়, তবে true রিটার্ন করুন
- প্রতিটি ক্যারেক্টার char-এর জন্য:
- occurrence[char] := occurrence[char] - 1
- যদি এখন সব ফ্রিকোয়েন্সি সমান হয়, তবে true রিটার্ন করুন
- occurrence[char] := occurrence[char] + 1 (ফিরিয়ে দিন)
- false রিটার্ন করুন
উদাহরণ
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