Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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")

View source on GitHub