javascript - 从数组javascript返回可能的最小连接

标签 javascript arrays sorting concatenation

我有这段代码适用于这个数组:['45', '30', '50', '1']。

function penalty(a_list) {
  return a_list.sort((a, b) => a - b).join('');
}

例如:假设 a_list 是 ['45', '30', '50', '1'] 最小的可能字符串将是 '1304550' 这是正确的,但是如果 a_list 是 ['32', '3'] 给出这个当前代码我会得到 '332' 这是不正确的因为 '323' 是可能的最小字符串。希望有所帮助。

最佳答案

您可以采用 ab 的连接值以及 ba 的值并取它用于排序的增量,它反射(reflect)了两个字符串的排序顺序,以获得较小的值以便稍后加入。

如果提供整数,则需要在排序回调中将值转换为字符串。

function sort(a, b) {
    return (a + b) - (b + a);
}

console.log([['45', '30', '50', '1'], ['32', '3']].map(a => a.sort(sort).join('')));

为了稳定排序,您可以将较小的值移到顶部(这不会影响后面连接的字符串)。这会将 '3' 排在 '33' 之前。

function sort(a, b) {
    return (a + b) - (b + a) || a - b;
}

console.log([['45', '30', '50', '1'], ['32', '3']].map(a => a.sort(sort).join('')));

关于javascript - 从数组javascript返回可能的最小连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378471/

相关文章:

javascript - 使用 String.includes() 在字符串中搜索精确的字符串

javascript - 无法让我的 for 循环工作

jquery - 检查多个 DOM 值

performance - 为什么快排的常数因子比堆排序好?

javascript - 使图形着色不那么严格

javascript - javascript 中有没有一种好方法可以从 javascript 对象(而不是数组)中删除 Falsy 值?

c - 为什么这种对指针数组的赋值不给运行时错误有效?

python - 如何增强此 python 代码以对 FQN 主机名和 IP 地址列表进行自然排序?

algorithm - 是否可以使用归并排序对堆栈进行排序?

javascript - Node.js 版本到 ECMAScript 版本的映射