मान लीजिए हमारे पास एक स्ट्रिंग के रूप में कंपनी नाम है। हमें कंपनी नाम से सबसे आम तीन वर्ण ढूंढने हैं और उन्हें निम्न नियमों के अनुसार दिखाना है:
- सबसे अधिक बार आने वाले तीन अक्षर चुनें
- उन्हें अवरोही क्रम में सॉर्ट करें
- यदि कुछ वर्णों की आवृत्ति समान है तो उनके वर्णमाला क्रम के अनुसार लें
उदाहरण के लिए, यदि इनपुट s = "TUTORIALSPOINT" है, तो आउटपुट [[3, 'T'], [2, 'I'], [2, 'O']] होगा।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- x := s में अक्षरों और उनकी आवृत्तियों वाला मैप
- res := एक नई सूची
- x में प्रत्येक i के लिए, करें
- जोड़ी (x[i], i) को res में डालें
- res := वर्णमाला क्रम के आधार पर सॉर्ट किया गया res
- res := आवृत्ति के आधार पर रिवर्स ऑर्डर में सॉर्ट किया गया res
- res से पहले तीन आइटम लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
from collections import Counter
def solve(s):
x = Counter(s)
res = []
for i in x:
res.append([x[i], i])
res = sorted(res, key=lambda cnt: cnt[1])
res = sorted(res, key=lambda cnt: cnt[0], reverse=True)
return res[:3]
s = "TUTORIALSPOINT"
print(solve(s))इनपुट
"TUTORIALSPOINT"
आउटपुट
[[3, 'T'], [2, 'I'], [2, 'O']]