Move History

Fork Selected
  • Code
    import java.util.*;
    import java.util.stream.*;
    
    class Solution {
      public static String largestNumber(Integer[] nums) {
        final StringBuilder sb = new StringBuilder();
        return Arrays.stream(nums)
              .parallel()
              .map((n) -> n.toString())
              .sorted(Solution::compareNumberString)
              .collect(Collectors.joining())
              .toString();
      }
      
      private static int compareNumberString(String s1, String s2) {
        if (s2.startsWith(s1)) return compareNumberString(s2.substring(s1.length()), s1);
        if (s1.startsWith(s2)) return compareNumberString(s1.substring(s2.length()), s2);
        return s2.compareTo(s1);
      }
    }
    Test Cases
    import org.junit.Test;
    import static org.junit.Assert.assertEquals;
    import org.junit.runners.JUnit4;
    
    public class SolutionTest {
        @Test
        public void test1() {
            assertEquals( "56550", Solution.largestNumber(new Integer[] {5, 50, 56}) );
        }
        
        @Test
        public void test2() {
            assertEquals( "8765431", Solution.largestNumber(new Integer[] {1, 3, 5, 4, 7, 6, 8}) );
        }
    }
  • Code
    • import java.util.*;
    • import java.util.stream.*;
    • class Solution {
    • public static String largestNumber(Integer[] nums) {
    • Arrays.sort( nums, new Comparator<Integer>() {
    • @Override
    • public int compare(Integer a, Integer b) {
    • String aStr = a.toString();
    • String bStr = b.toString();
    • return (aStr + bStr).compareTo(bStr + aStr) * -1;
    • }
    • } );
    • String result = "";
    • for(Integer num : nums) {
    • result += num.toString();
    • }
    • return result;
    • final StringBuilder sb = new StringBuilder();
    • return Arrays.stream(nums)
    • .parallel()
    • .map((n) -> n.toString())
    • .sorted(Solution::compareNumberString)
    • .collect(Collectors.joining())
    • .toString();
    • }
    • private static int compareNumberString(String s1, String s2) {
    • if (s2.startsWith(s1)) return compareNumberString(s2.substring(s1.length()), s1);
    • if (s1.startsWith(s2)) return compareNumberString(s1.substring(s2.length()), s2);
    • return s2.compareTo(s1);
    • }
    • }