diff options
author | Haidong Ji | 2018-10-02 08:10:29 -0500 |
---|---|---|
committer | Haidong Ji | 2018-10-02 08:10:29 -0500 |
commit | 46b8bc73e7a78bdf539f7c43d849c434fed35224 (patch) | |
tree | 6fa924de3ee5ba149bc3711be693d57a7a7d5f2d /AlgoDesignAndTechniqueEdxJava/sources | |
parent | e5b7ce55049265c4391d910ed44c9a89b5131266 (diff) |
Checking in for pulling from laptop.
Maximize salary close to done. Still some bugs. Will likely fix it on my
laptop.
Diffstat (limited to 'AlgoDesignAndTechniqueEdxJava/sources')
-rw-r--r-- | AlgoDesignAndTechniqueEdxJava/sources/LargestNumber.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/AlgoDesignAndTechniqueEdxJava/sources/LargestNumber.java b/AlgoDesignAndTechniqueEdxJava/sources/LargestNumber.java new file mode 100644 index 0000000..0458b91 --- /dev/null +++ b/AlgoDesignAndTechniqueEdxJava/sources/LargestNumber.java @@ -0,0 +1,59 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; + +public class LargestNumber { + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + int n = scanner.nextInt(); + String[] a = new String[n]; + for (int i = 0; i < n; i++) { + a[i] = scanner.next(); + } + System.out.println(getLargestNumber(a)); + } + + public static String getLargestNumber(String[] numbers) { + List<String> numList = new ArrayList<String>(Arrays.asList(numbers)); + String result = ""; + String maxDigit = "0"; + int indexHolder = 0; + while (numList.size() > 0) { + for (int i = 0; i < numList.size(); i++) { + if (compareLeadingDigit(numList.get(i), maxDigit)) { + maxDigit = numList.get(i); + indexHolder = i; + } + } + result = result + maxDigit; + maxDigit = "0"; + numList.remove(indexHolder); + } + return result; + } + + public static boolean compareLeadingDigit(String string, String maxDigit) { + if (string.length() == maxDigit.length()) + return Integer.parseInt(string) > Integer.parseInt(maxDigit); + if (string.length() < maxDigit.length()) { + if (string.charAt(0) > maxDigit.charAt(0)) { + return true; + } else if (string.charAt(0) < maxDigit.charAt(0)) { + return false; + } else if (string.charAt(0) > maxDigit.charAt(1)) { + return true; + } else if (string.charAt(0) < maxDigit.charAt(1)) { + return false; + } else if (maxDigit.length() == 2) + return false; + else { + return string.charAt(0) > maxDigit.charAt(2); + } + } else { + return !compareLeadingDigit(maxDigit, string); + } + } + +} |