समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो वर्णों की स्ट्रिंग को एकमात्र तर्क के रूप में लेता है।
हमारे फ़ंक्शन को तैयार करना चाहिए और मूल स्ट्रिंग के आधार पर एक नई स्ट्रिंग तैयार करनी चाहिए जिसमें सबसे अधिक बार दिखाई देने वाले वर्णों को पहले रखा जाता है और उसके बाद घटती आवृत्तियों के साथ संख्या होती है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
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));
कोड स्पष्टीकरण:
हमने जो कदम उठाए वे हैं -
-
सबसे पहले, हमने अक्षर गणना का हैशमैप तैयार किया
-
फिर हमने अक्षरों की संख्या के अनुसार मानचित्र को क्रमित किया
-
और अंत में, हमने सॉर्ट किए गए अक्षर से रेस स्ट्रिंग जेनरेट की
आउटपुट
और कंसोल में आउटपुट होगा -
eefr