ধরুন, একটি স্ট্রিং দেওয়া হয়েছে। আমাদের যাচাই করতে হবে যে এর ক্যারেক্টারগুলো শাফল (rearrange) করে কি একটি প্যালিনড্রোম বানানো সম্ভব।
যেমন, ইনপুট s = "aarcrce" হলে আউটপুট হবে True, কারণ এটি শাফল করে "racecar" বানানো যায় যা প্যালিনড্রোম।
সমাধানের ধাপসমূহ
size = 256(ASCII রেঞ্জ)।freqঅ্যারে ২৫৬ সাইজে ০ দিয়ে ফিল করুন।- স্ট্রিং ট্রাভার্স করে ফ্রিকোয়েন্সি বাড়ান।
odd_count = 0।- ফ্রিকোয়েন্সি অ্যারে স্ক্যান করুন:
- যদি
freq[i] % 2 == 1হয়, তবেodd_count++। - যদি
odd_count > 1হয়, তবে False ফেরত দিন।
- যদি
- লুপ শেষ হলে True ফেরত দিন।
উদাহরণ কোড
size = 256
def solve(s):
freq = [0] * size
for i in range(len(s)):
freq[ord(s[i])] += 1
odd_count = 0
for i in range(size):
if freq[i] % 2 == 1:
odd_count += 1
if odd_count > 1:
return False
return True
s = "aarcrce"
print(solve(s))
ইনপুট
"aarcrce"
আউটপুট
True