数串求最大值

一、解法一

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解法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值