const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void async function () { // Write your code here while(line = await readline()){ let obj={}; let str_arr = line.split(''); for(let i=0; i<str_arr.length; i++){ if(obj[str_arr[i]] == undefined){ obj[str_arr[i]] = 1; }else{ obj[str_arr[i]]++; } } let m_set = new Set([...Object.values(obj)]); // 次数去重 let m_arr = Array.from(m_set).sort((a,b)=>b-a); // 次数降序,从多到少 let str = ''; for(let j=0;j<m_arr.length; j++){ let same_times_c_arr = []; for(key in obj){ if(obj[key] == m_arr[j]){ same_times_c_arr.push(key); } } if(same_times_c_arr.length == 1){ // 只有一个字母 str += same_times_c_arr[0]; }else{ // 有多个字母 let unicode_arr = same_times_c_arr.map(item=>{ // 字符先转换为Unicode码 return item.charCodeAt(); }); unicode_arr = unicode_arr.sort((a,b)=>a-b); // unicode 升序排序 unicode_arr = unicode_arr.map(item=>{ // Unicode码再转换为字符 return String.fromCharCode(item); }); let sorted_str = unicode_arr.join(''); str+=sorted_str; // 字符串拼接 } } console.log(str); } }()