Amazon Interview Question
SDETsCountry: India
Interview Type: In-Person
package com.learn;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class MaxNum {
public static void main(String[] args) {
List<Integer> num = new ArrayList<Integer>();
num.add(11);
num.add(10);
num.add(990);
num.add(870);
num.add(32);
num.add(94);
num.add(210);
num.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
String o1str = o1.toString();
String o2str = o2.toString();
Integer returnint = 0;
int len1 = o1str.length();
int len2 = o2str.length();
// if length of first digit is less than second
if(len1<len2){
int o2Int = new Integer(o2str.substring(0, len1));
returnint = o2Int - o1;
// if length of first digit is less than second
}else if(len1>len2){
int o1Int = new Integer(o1str.substring(0, len2));
returnint = o2 - o1Int;
// if both the lengths are same
}else{
returnint = o2-o1;
}
return returnint;
}
});
for(int i=0;i<num.size();i++){
//commas just to show the numbers
System.out.print(num.get(i)+",");
}
}
}
package com.learn;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class MaxNum {
public static void main(String[] args) {
List<Integer> num = new ArrayList<Integer>();
num.add(11);
num.add(10);
num.add(990);
num.add(870);
num.add(32);
num.add(94);
num.add(210);
num.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
String o1str = o1.toString();
String o2str = o2.toString();
Integer returnint = 0;
int len1 = o1str.length();
int len2 = o2str.length();
// if length of first digit is less than second
if(len1<len2){
int o2Int = new Integer(o2str.substring(0, len1));
returnint = o2Int - o1;
// if length of first digit is less than second
}else if(len1>len2){
int o1Int = new Integer(o1str.substring(0, len2));
returnint = o2 - o1Int;
// if both the lengths are same
}else{
returnint = o2-o1;
}
return returnint;
}
});
for(int i=0;i<num.size();i++){
//commas just to show the numbers
System.out.print(num.get(i)+",");
}
}
}
package com.learn;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class MaxNum {
public static void main(String[] args) {
List<Integer> num = new ArrayList<Integer>();
num.add(11);
num.add(10);
num.add(990);
num.add(870);
num.add(32);
num.add(94);
num.add(210);
num.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
String o1str = o1.toString();
String o2str = o2.toString();
Integer returnint = 0;
int len1 = o1str.length();
int len2 = o2str.length();
// if length of first digit is less than second
if(len1<len2){
int o2Int = new Integer(o2str.substring(0, len1));
returnint = o2Int - o1;
// if length of first digit is less than second
}else if(len1>len2){
int o1Int = new Integer(o1str.substring(0, len2));
returnint = o2 - o1Int;
// if both the lengths are same
}else{
returnint = o2-o1;
}
return returnint;
}
});
for(int i=0;i<num.size();i++){
//commas just to show the numbers
System.out.print(num.get(i)+",");
}
}
}
Just convert all ints to string, and use String comparator
import java.util.*;
public class MaxNumber {
public static void main(String... args) {
if (args.length == 0) {
return;
}
int n = args.length;
Integer[] ints = new Integer[n];
for (int i = 0; i < n; i++) {
ints[i] = Integer.parseInt(args[i]);
}
Arrays.sort(ints, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.toString().compareTo(o1.toString());
}
});
for (int i = 0; i < n; i++) {
System.out.print(ints[i]);
}
System.out.println();
}
}
struct Comparator{
bool operator()(string & a, string & b){
return (a + b) > (b + a);
}
} comparator;
string largestNumber(vector<int>& nums) {
vector<string> strs;
for(int num : nums){
strs.push_back(to_string(num));
}
sort(strs.begin(), strs.end(), comparator);
string res;
for(string s : strs){
res += s;
}
return res[0] == '0' ? "0" : res;
}
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
def lesser ( str1,str2 ):
if len(str1) > len(str2) :
str2 += str1
else :
str1 += str2
return str1 < str2
for i in range(1,len(numbers)) :
for j in range(0,len(numbers)-i) :
if lesser(numbers[j],numbers[j+1]) :
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
numb = ""
for num in numbers :
numb += num
print numb
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int i,j,k,temp,c,n,min,op,no,temp_no[20],pos[10],in;
int array[10];
int nod[10];
j=0;
cout<<"enter the amount of number's you want";
cin>>n;
for(i=0;i<n;i++)
cin>>n;
for(i=0;i<n;i++)
pos[i]=i;
for(i=0;i<n;i++)
{
c=0;
temp=array[i];
while(temp!=0)
{
c++;
temp=temp/10;
}
nod[j]=c;
j++;
}
min=nod[0];
for(k=0;k<n;k++)
{
if(min>nod[k])
min=nod[k];
}
for(i=0;i<n;i++)
{
op=nod[i]-min;
no=array[i];
for(k=0;k<op;k++)
{
no=no/10;
}
temp_no[i]=no;
}
for(k=0;k<n-1;k++)
{
for(j=0;j<n-k-1;j++)
{
if(temp_no[j]<temp_no[j+1])
{
temp=temp_no[j];
temp_no[j]=temp_no[j+1];
temp_no[j+1]=temp;
temp=pos[j];
pos[j]=pos[j+1];
pos[j+1]=temp;
}
}
}
for(k=0;k<n;k++)
{
in=k;
for(j=k+1;j<n;j++)
{
if(temp_no[in]==temp_no[j])
{
if(array[pos[in]] < array[pos[j]])
{
temp=pos[in];
pos[in]=pos[j];
pos[j]=temp;
}
}
}
}
for(k=0;k<n;k++)
{
cout<<array[pos[k]];
}
}
Comparison should be based on appending one number at the from of other and vice versa.
- neebanv November 14, 2015