votes নামক স্ট্রিং তালিকা দেওয়া আছে যেখানে প্রতিটি স্ট্রিং ছোট হাতের অক্ষর এবং 候选人的 পছন্দ ক্রম নির্দেশ করে। র্যাঙ্কিং সর্বোচ্চ পছন্দের ভোট সংখ্যায় নির্ভর করে। টাই হলে পরবর্তী পছন্দে ভোট গুনে এবং সেটাও সমান হলে অক্ষরানুক্রমে র্যাঙ্ক করা হয়।
উদাহরণ: votes = ["zyx", "zxy", "xyz"] হলে আউটপুট "zxy"।
সমাধানের ধাপসমূহ
- count := ভোট স্ট্রিং দৈর্ঘ্য
- cand := প্রতিটি প্রার্থীর জন্য count আকারের শূন্য তালিকা
- প্রতিটি ভোটে প্রতিটি প্রার্থীর অবস্থান অনুযায়ী কাউন্ট বাড়ান
- প্রার্থীদের কাউন্ট তালিকা অনুযায়ী ডিসেন্ডিং সর্ট করুন, টাই হলে অক্ষরানুক্রমে
- সর্ট করা প্রার্থীদের জোড়া দিয়ে স্ট্রিং ফেরত দিন
উদাহরণ কোড
from collections import defaultdict
class Solution:
def solve(self, votes):
count = len(votes[0])
cand = defaultdict(lambda: [0] * count)
for v in votes:
for i, c in enumerate(v):
cand[c][i] += 1
return "".join(sorted(cand.keys(), key=lambda x: (cand[x], -ord(x)), reverse=True))
ob = Solution()
votes = ["zyx", "zxy", "xyz"]
print(ob.solve(votes))
ইনপুট
["zyx", "zxy", "xyz"]
আউটপুট
zxy