CC-18 : Find largest concatenated number.
Description:
Given an input array of numbers, find the largest number that can be formed by concatenating the numbers in the array,
Test cases and expected outputs:
| Input Parameters | Expected outputs |
|---|---|
| Array: 37, 3, 4, 97, |
Largest concatenated number: 974373 |
Pseudocode:
Class StrNumCompare implements Comparator:
compare(s1,s2):
| Compare (s2+s1) with (s1+s2) alphabetically by calling String.compareTo() method to check which collation is alphabetically larger. |
largestConcatenatedNumber(nums[]):
| Integer array named nums is received as input parameter. |
| Add all numbers in nums to String Arraylist named numStrings. |
| Sort numStrings using StrNumCompare as comparator. |
| Concatenate all numbers from numStrings to get largestConcatenated number as a String. |
| Convert largestConcatenated String to int largestConcatendedInt. |
| Return largestConcatendedInt. |
Code:
class StrNumCompare implements Comparator<String>{
public int compare(String s1, String s2) {
return (s2+s1).compareTo(s1+s2);
}
}
public int largestConcatenatedNumber(int[] nums) {
ArrayList<String> numStrings=new ArrayList<String>();
for (int idx=0; idx < nums.length;idx++) {
numStrings.add(""+nums[idx]);
}
numStrings.sort(new StrNumCompare());
String largestConcatenated=new String();
for (int idx=0; idx < numStrings.size();idx++) {
largestConcatenated+=(""+numStrings.get(idx));
}
int largestConcatendedInt=Integer.parseInt(largestConcatenated);
return largestConcatendedInt;
}
Click here to download and run code and test cases !
| About Us | Privacy Policy | Contact us |