Learn-dsa..in 30 days!



























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 !