浙大PAT 1038题 1038. Recover the Smallest Number

快排飘过,代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp(const void *m,const void *n){
  char *a=(char *)m;
  char *b=(char *)n;
  char tmpa[20],tmpb[20];
  strcpy(tmpa,a);
  strcpy(tmpb,b);
  strcat(tmpa,b);
  strcat(tmpb,a);
  return strcmp(tmpa,tmpb);
}
char str[10005][10];
int main(){
  int i,j,n;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%s",str[i]);
  }
  qsort(str,n,10*sizeof(char),cmp);
  int flag=0;
  for(i=0;i<n;i++){
    for(j=0;str[i][j]!='\0';j++){
      if(flag==0&&str[i][j]=='0');
      else {flag=1;printf("%c",str[i][j]);}
    }
  }
  if(flag==0) printf("0");//如果所有段都为零,那么必须输出一个零
  printf("\n");
  return 0;
} 


用Java写了一下,那组万级的测试数据超时,用java做pat真是不公平啊。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		int i,n;
		List<String> strList=new ArrayList<String>();
		Scanner sc=new Scanner(System.in);
		n=sc.nextInt();
		for(i=0;i<n;i++){
			strList.add(sc.next());
		}
		Collections.sort(strList, new MyComparator());
		StringBuilder sb=new StringBuilder();
		for(String str:strList){
			sb.append(str);
		}
		i=0;
		while(i<sb.length()&&sb.charAt(i)=='0'){
			i++;
		}
		if(i==sb.length()){
			System.out.println("0");
		}
		else{
			for(;i<sb.length();i++){
				System.out.print(sb.charAt(i));
			}
			System.out.println();
		}
	}

}
class MyComparator implements Comparator<Object>{
	//返回一个基本类型的整型,返回负数表示o1 小于o2,返回0 表示o1和o2相等,返回正数表示o1大于o2。 
	public int compare(Object o1, Object o2) {
		String s1=(String)o1;
		String s2=(String)o2;
		return (s1+s2).compareTo(s2+s1);
	}	
}


 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值