समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो अक्षरों की स्ट्रिंग को एकमात्र आर्ग्युमेंट के रूप में लेता है।
हमारा फ़ंक्शन मूल स्ट्रिंग के आधार पर एक नई स्ट्रिंग तैयार करनी चाहिए जिसमें सबसे अधिक बार आने वाले अक्षर पहले रखे जाएं और फिर घटती आवृत्तियों के साथ।
उदाहरण
यदि फ़ंक्शन का इनपुट है:
const str = 'free';
तो आउटपुट होना चाहिए:
const output = 'eefr';
आउटपुट व्याख्या:
चूंकि e दो बार आता है इसलिए इसे पहले रखा जाता है उसके बाद r और f।
कोड
const str = 'free'; const frequencySort = (str = '') => { let map = {} for (const letter of str) { map[letter] = (map[letter] || 0) + 1; }; let res = ""; let sorted = Object.keys(map).sort((a, b) => map[b] - map[a]) for (let letter of sorted) { for (let count = 0; count < map[letter]; count++) { res += letter } } return res; }; console.log(frequencySort(str));कोड व्याख्या:
हमने जो चरण उठाए वे हैं:
पहले, हमने अक्षर गिनती का हैशमैप तैयार किया।
फिर हमने मैप को अक्षरों की गिनती के अनुसार सॉर्ट किया।
और अंत में, हमने सॉर्ट किए गए अक्षरों से res स्ट्रिंग उत्पन्न की।
आउटपुट
कंसोल में आउटपुट होगा:
eefr