Largest Number
Arrange non-negative integers to form the largest possible number and return it as a string.
def largest_number(nums: List[Int]) raises -> String:
if len(nums) == 0:
return ""
strs = List[String](capacity=len(nums))
for each in nums:
strs.append(String(each[]))
sort[compare_fn](strs)
result = StringSlice("").join(strs)
return String(Int(result))
@parameter
def compare_fn(left: String, right: String) -> Bool:
return left + right > right + left
from std.testing import assert_true
def main() raises:
nums = [10, 2]
result = largest_number(nums)
assert_true(result == "210", "Assertion failed")
nums = [3, 30, 34, 5, 9]
result = largest_number(nums)
assert_true(result == "9534330", "Assertion failed")
nums = [0, 0, 0, 0, 0]
result = largest_number(nums)
assert_true(result == "0", "Assertion failed")
nums = List[Int]()
result = largest_number(nums)
assert_true(result == "", "Assertion failed")