সমস্যা বিবরণ
একটি স্ট্রিং S দেওয়া আছে (লোয়ারকেস)। দুজন খেলোয়াড় খেলছে। নিয়ম:
- যেকোনো মুভে যদি খেলোয়াড় ক্যারেক্টারগুলো সাজিয়ে প্যালিনড্রোম বানাতে পারে, সে জিতবে।
- ক্যারেক্টার মুছে দিয়ে জয় করা যাবে না।
উদাহরণস্বরূপ, "pqpppq" হলে আউটপুট Player 1 কারণ প্লেয়ার ১ প্রথম মুভেই "ppqqpp" বানিয়ে জিতে।
সমাধানের ধাপসমূহ
- ফ্রিকোয়েন্সি অ্যারে
freq[26]বানান। - বিজোড় ফ্রিকোয়েন্সি वाले ক্যারেক্টার সংখ্যা
countবের করুন। - যদি
count == 0অথবাcountবিজোড় হয়, প্লেয়ার ১ জিতবে (return 1)। - অন্যথায় প্লেয়ার ২ জিতবে (
return 2)।
পাইথন কোড উদাহরণ
def who_is_the_winner(sequence):
l = len(sequence)
freq = [0] * 26
for i in range(l):
freq[ord(sequence[i]) - ord('a')] += 1
count = 0
for i in range(26):
if freq[i] % 2 != 0:
count += 1
if count == 0 or count & 1 == 1:
return 1
else:
return 2
sequence = "pqpppq"
print("Player:", who_is_the_winner(sequence)) # আউটপুট: Player: 1
ইনপুট
"pqpppq"
আউটপুট
Player: 1