在 JavaScript 中格式化字符串以分离相同字符
我们要求编写一个 JavaScript 函数,它将一个字符串作为第一个且唯一的参数输入。
该函数应尝试重新组织字符串中存在的字符,以便没有两个相同的字符彼此相邻放置。
如果存在至少一个这样的组合,那么我们的函数应该返回该组合字符串,否则我们的函数应该返回一个空字符串。
例如 -
如果输入字符串为 -
const str = 'add';
那么我们的函数可以输出 -
const output = 'dad';
示例
以下是代码 -
const str = 'add'; const formatString = (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 flag = str.length%2?(Math.floor(str.length/2)+1):str.length/2; if(map[keys[0]] > flag){ 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(formatString(str));
输出
以下是控制台输出 -
dad
广告