拼数 题解

拼数

http://www.nowcoder.com/questionTerminal/bf617f7a721b4df3874b79169e692d96

这道题用一个排序来处理这个String数组。
排序不是比较大小,而是比较两个String前后不同排列的大小。
比如21和211,要是用大小排序的话组合数来的数为21121,这样并不如21211大,所以要用两个String不同位置的大小比较进行排序。

import java.math.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.*;
public class Main {
    public static void main(String args[])throws IOException
    {
        StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        String a[] = new String[n];
        for(int i=0;i<n;i++)
        {
            a[i] = input.next();
        }
        String temp;
        for(int i=0;i<n-1;i++)
        {
            for(int k=0;k<n-1-i;k++)
            {
                if((a[k]+a[k+1]).compareTo(a[k+1]+a[k])>0)
                {
                    temp = a[k];
                    a[k] = a[k+1];
                    a[k+1] = temp;
                }
            }
        }
        for(int i=n-1;i>=0;i--)
        {
            System.out.print(a[i]);
        }
    }
                  }
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务