簡體   English   中英

從數組javascript返回最小可能的聯接

[英]return the smallest possible join from array javascript

我有適合以下數組的代碼:['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和利用它的增量進行排序,這反映了兩個字符串為后來加入的較小值的排序順序。

如果提供了整數,則需要在sort回調中將值轉換為字符串。

 function sort(a, b) { return (a + b) - (b + a); } console.log([['45', '30', '50', '1'], ['32', '3']].map(a => a.sort(sort).join(''))); 

對於穩定的排序,可以將較小的值移到頂部(這不會影響后面的連接字符串)。 '33'之前將'3'排序。

 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(''))); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM