数串求最大值
一、解法一
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(in.nextInt());
}
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
String s1 = String.valueOf(o1);
String s2 = String.valueOf(o2);
return (s2 + s1).compareTo(s1 + s2);
}
});
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}
System.out.println();
}
}
}
二、解法二
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sin=new Scanner(System.in);
List<String>list=new ArrayList<String>();
while(sin.hasNext())
{
int N=sin.nextInt();
while(N>0)
{
int k=sin.nextInt();
if(k>0&&k<1001)
{
list.add(k+""); //存储N个正整数
}
--N;
}
//一、此种解法存在问题
// while(list.size()!=0)
// {
// String str=list.get(0);
// for(int i=1;i<list.size();i++)
// {
// str=str.compareTo(list.get(i))>0?str:list.get(i);
// }
// sum+=str;
// list.remove(str);
// }
//二、比较法
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return (o2+o1).compareTo(o1+o2);
}
});
//对N个正整数进行重新组合获得最大的数
for(String str:list)
{
System.out.print(str);
}
System.out.println();
}
}
}
三、lambda表达式
四、python解法
还没有评论,来说两句吧...