import java.util.Arrays;
import java.util.stream.Collectors;
class Main
{
public static void main
( String[] args
) {
runTests();
}
public static void runTests()
{
//# Input from original post
assertEquals( largestNumber( new int[]{ 3, 30, 34, 5, 9 } ), "9534330" );
//# Other tests from other comments
assertEquals( largestNumber( new int[]{ 30, 301 } ), "30301" );
assertEquals( largestNumber( new int[]{ 3, 30, 34, 90, 9 } ), "99034330" );
//# Invalid assertion
assertEquals( largestNumber( new int[]{ 1, 2, 3 } ), "123" );
}
public static String largestNumber
( int[] array
) {
.stream( array )
.sorted( Main::sort )
.collect( Collectors.joining() );
return result;
}
{
}
private static void assertEquals
( String actual,
String expected
) {
if ( !actual.equals( expected ) )
{
System.
out.
println( "ERROR: Expected " + expected
+ " but found " + actual
); }
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CgpjbGFzcyBNYWluCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKICAgIHsKICAgICAgICBydW5UZXN0cygpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBydW5UZXN0cygpCiAgICB7CiAgICAgICAgLy8jIElucHV0IGZyb20gb3JpZ2luYWwgcG9zdAogICAgICAgIGFzc2VydEVxdWFscyggbGFyZ2VzdE51bWJlciggbmV3IGludFtdeyAzLCAzMCwgMzQsIDUsIDkgfSApLCAiOTUzNDMzMCIgKTsKICAgICAgICAvLyMgT3RoZXIgdGVzdHMgZnJvbSBvdGhlciBjb21tZW50cwogICAgICAgIGFzc2VydEVxdWFscyggbGFyZ2VzdE51bWJlciggbmV3IGludFtdeyAzMCwgMzAxIH0gKSwgIjMwMzAxIiApOwogICAgICAgIGFzc2VydEVxdWFscyggbGFyZ2VzdE51bWJlciggbmV3IGludFtdeyAzLCAzMCwgMzQsIDkwLCA5IH0gKSwgIjk5MDM0MzMwIiApOwogICAgICAgIC8vIyBJbnZhbGlkIGFzc2VydGlvbgogICAgICAgIGFzc2VydEVxdWFscyggbGFyZ2VzdE51bWJlciggbmV3IGludFtdeyAxLCAyLCAzIH0gKSwgIjEyMyIgKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBsYXJnZXN0TnVtYmVyKCBpbnRbXSBhcnJheSApCiAgICB7CiAgICAgICAgU3RyaW5nIHJlc3VsdCA9IEFycmF5cwogICAgICAgICAgICAuc3RyZWFtKCBhcnJheSApCiAgICAgICAgICAgIC5tYXBUb09iaiggU3RyaW5nOjp2YWx1ZU9mICkKICAgICAgICAgICAgLnNvcnRlZCggTWFpbjo6c29ydCApCiAgICAgICAgICAgIC5jb2xsZWN0KCBDb2xsZWN0b3JzLmpvaW5pbmcoKSApOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggcmVzdWx0ICk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCBzb3J0KCBTdHJpbmcgYSwgU3RyaW5nIGIgKQogICAgewogICAgICAgIFN0cmluZyB0MSA9IGEgKyBiOwogICAgICAgIFN0cmluZyB0MiA9IGIgKyBhOwogICAgICAgIHJldHVybiBJbnRlZ2VyLmNvbXBhcmUoIDAsIEludGVnZXIudmFsdWVPZiggdDEgKS5jb21wYXJlVG8oIEludGVnZXIucGFyc2VJbnQoIHQyICkgKSApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYXNzZXJ0RXF1YWxzKCBTdHJpbmcgYWN0dWFsLCBTdHJpbmcgZXhwZWN0ZWQgKQogICAgewogICAgICAgIGlmICggIWFjdHVhbC5lcXVhbHMoIGV4cGVjdGVkICkgKQogICAgICAgIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiRVJST1I6IEV4cGVjdGVkICIgKyBleHBlY3RlZCArICIgYnV0IGZvdW5kICIgKyBhY3R1YWwgKTsKICAgICAgICB9CiAgICB9Cgp9