Hackerrank - Big Sorting
Consider an array of numeric strings where each string is a positive number with anywhere from to digits. Sort the array's elements in non-decreasing, or ascending order of their integer values and return the sorted array.
Example
Return the array ['1', '3', '150', '200'].
Function Description
Complete the bigSorting function in the editor below.
bigSorting has the following parameter(s):
- string unsorted[n]: an unsorted array of integers as strings
Returns
- string[n]: the array sorted in numerical order
Input Format
The first line contains an integer, , the number of strings in .
Each of the subsequent lines contains an integer string, .
Constraints
- Each string is guaranteed to represent a positive integer.
- There will be no leading zeros.
- The total number of digits across all strings in is between and (inclusive).
Sample Input 0
6
31415926535897932384626433832795
1
3
10
3
5
Sample Output 0
1
3
3
5
10
31415926535897932384626433832795
Explanation 0
The initial array of strings is . When we order each string by the real-world integer value it represents, we get:
We then print each value on a new line, from smallest to largest.
Sample Input 1
8
1
2
100
12303479849857341718340192371
3084193741082937
3084193741082938
111
200
Sample Output 1
1
2
100
111
200
3084193741082937
3084193741082938
12303479849857341718340192371
import java.io.*;import java.math.*;import java.security.*;import java.text.*;import java.util.*;import java.util.concurrent.*;import java.util.function.*;import java.util.regex.*;import java.util.stream.*;import static java.util.stream.Collectors.joining;import static java.util.stream.Collectors.toList;
class Solution { public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String[] numbers = new String[n];
for (int i = 0; i < numbers.length; i++) { numbers[i] = sc.next(); }
Arrays.sort(numbers, new Comparator<String>() { @Override public int compare(String x, String y) { if (x.length() != y.length()) return x.length() - y.length();
for (int i = 0; i < x.length(); i++) { if (x.charAt(i) - y.charAt(i) != 0) return x.charAt(i) - y.charAt(i); }
return 0; }
});
for (String num : numbers) { System.out.println(num); } }}
Comments
Post a Comment