在 JavaScript 中将相同字符串字符分开
问题
我们需要编写一个 JavaScript 函数,它接收一个字符串(作为第一个参数)和一个数字(比输入字符串的长度小)作为第二个参数。
该函数应重新排列字符串 str 的字符并构建一个新字符串,使得没有两个相似字符间隔小于 num 个字符(换句话说,相似字符应该至少相隔 num 个字符)。
该函数最终应该返回新构建的字符串。如果无法实现这种排列,我们的函数应返回一个空字符串。
例如,如果输入函数的内容为 -
const str = 'kkllmm';
输出应为 -
const output = 'mlmklk';
示例
对应的代码为 -
const str = 'kkllmm'; const placeApart = (str = '') => { const map = {}; for(let i=0; i<str.length; i++){ map[str[i]] = map[str[i]] || 0; map[str[i]] ++; } let keys = Object.keys(map).sort((a,b)=>{ if(map[a]<map[b]) return 1; return -1; }); let len = str.length%2 ? (Math.floor(str.length/2)+1) : str.length/2; if(map[keys[0]] > len){ return ""; }; const res = []; let index = 0, max = str.length-1; while(keys.length){ let currKey = keys.shift(); let count = map[currKey]; while(count){ res[index] = currKey; index = index+2; if(index>max) index=1; count--; } } return res.join(""); }; console.log(placeApart(str));
输出
控制台中的输出为 -
mlmklk
广告