PAT 1038

来源:互联网 发布:nginx 访问文件 403 编辑:程序博客网 时间:2024/06/07 12:06

题目链接如下:
pat 1038
此题的重点在于 32,321 3214 在排序时应当是 32 3214 321 的顺序,仔细观察发现只需先循环的填充不足8位的数至八位再排序即可得到正确的序列 如该用例中 321->32132132 3214->32143214 32->32323232 如何排序即一目了然
同时要注意最开始的0是不输出的,并且如果输入的全是0则应当输出一个0
此题仍然对于java来说无法ac,有一组超时,但使用c语言则可以ac
代码如下(有一组超时)

import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc=new Scanner(System.in);        int n=sc.nextInt();        int flag1=1;        int flag2=1;        ArrayList<A> ar=new ArrayList<A>();        for(int i=0;i<n;i++){            ar.add(new A(sc.next()));        }        Collections.sort(ar);        for(int i=0;i<ar.size();i++){            A a=ar.get(i);            char[] rr=a.s.toCharArray();            for(int j=0;j<rr.length;j++){                if(rr[j]=='0'){                    if(flag1==0){                        System.out.print(rr[j]);                    }                    else                        continue;                       }                else{                    System.out.print(rr[j]);                    flag1=0;                    flag2=0;                }            }        }        if(flag2==1) System.out.println('0');        else System.out.println();    }}class A implements Comparable<A>{    String s;    A(String s){        this.s=s;    }    @Override    public int compareTo(A o) {        String m1=s;        String m2=o.s;        int l1=m1.length();        int l2=m2.length();        for(int i=0;i<8-l1;i++)            m1+=s.toCharArray()[i%l1];        for(int i=0;i<8-l2;i++)            m2+=o.s.toCharArray()[i%l2];        return m1.compareTo(m2);    }}
0 0
原创粉丝点击