我们需要编写一个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