数串求最大值

Love The Way You Lie 2022-05-27 23:00 260阅读 0赞

CenterCenter 1

一、解法一

  1. import java.util.*;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner in = new Scanner(System.in);
  5. while (in.hasNext()) {
  6. int n = in.nextInt();
  7. List<Integer> list = new ArrayList<>();
  8. for (int i = 0; i < n; i++) {
  9. list.add(in.nextInt());
  10. }
  11. Collections.sort(list, new Comparator<Integer>() {
  12. @Override
  13. public int compare(Integer o1, Integer o2) {
  14. String s1 = String.valueOf(o1);
  15. String s2 = String.valueOf(o2);
  16. return (s2 + s1).compareTo(s1 + s2);
  17. }
  18. });
  19. for (int i = 0; i < list.size(); i++) {
  20. System.out.print(list.get(i));
  21. }
  22. System.out.println();
  23. }
  24. }
  25. }

二、解法二

  1. import java.util.*;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner sin=new Scanner(System.in);
  5. List<String>list=new ArrayList<String>();
  6. while(sin.hasNext())
  7. {
  8. int N=sin.nextInt();
  9. while(N>0)
  10. {
  11. int k=sin.nextInt();
  12. if(k>0&&k<1001)
  13. {
  14. list.add(k+""); //存储N个正整数
  15. }
  16. --N;
  17. }
  18. //一、此种解法存在问题
  19. // while(list.size()!=0)
  20. // {
  21. // String str=list.get(0);
  22. // for(int i=1;i<list.size();i++)
  23. // {
  24. // str=str.compareTo(list.get(i))>0?str:list.get(i);
  25. // }
  26. // sum+=str;
  27. // list.remove(str);
  28. // }
  29. //二、比较法
  30. Collections.sort(list, new Comparator<String>(){
  31. @Override
  32. public int compare(String o1, String o2) {
  33. return (o2+o1).compareTo(o1+o2);
  34. }
  35. });
  36. //对N个正整数进行重新组合获得最大的数
  37. for(String str:list)
  38. {
  39. System.out.print(str);
  40. }
  41. System.out.println();
  42. }
  43. }
  44. }

三、lambda表达式

20180326113437834

四、python解法

20180326113521254

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读