重新排列字符串,使相同字符相距 n 个距离 JavaScript
javascriptweb developmentobject oriented programming更新于 2025/10/27 5:32:17
我们需要编写一个 JavaScript 函数,该函数接受一个包含重复字符的字符串,并返回一个新字符串,其中所有相同字符彼此之间的距离恰好为 n 个字符。并且该数字应小于数组的长度。
例如 −
如果输入字符串为:"accessories" 并且数字 n 为 3 那么, 返回值应为:"secrsecisao"
注意 − 可能还有其他排列来实现所需的输出,顺序并不重要,我们应该坚持逻辑,只要我们实现它,我们的输出就是正确的。
让我们来编写该函数的代码 −
示例
const str = 'accessories';
const equalDistance = (str, num) => {
const map = str.split("").reduce((acc, val) => {
const count = acc.get(val);
if(typeof count === 'number'){
acc.set(val, count+1);
}else{
acc.set(val, 1);
};
return acc;
}, new Map());
const arr = Array.from(map).sort((a, b) => b[1] - a[1]);
let newString = '';
for(let i = 0, count = 0; i < str.length;){
if(!arr[count][1]){
arr.splice(count, 1);
continue;
};
newString += arr[count][0];
arr[count][1]--;
i++;
count = i % num;
};
return newString;
};
console.log(equalDistance(str, 4));
console.log(equalDistance('abb', 2));
console.log(equalDistance('aacbbc', 3));
输出
控制台中的输出将是 −
sceasceosri bab acbacb
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

