Título del índice
Descripción de la pregunta
La Oficina de Seguridad ha buscado un lote (n) de números de identificación y espera ordenarlos de mayor a menor por fecha de nacimiento.Si son las mismas fechas, ordenar por tamaño del número de identificación. El número de identificación se compone de 18 dígitos y la fecha de nacimiento es del 7 al 14.
Entrada
Descripción de la entrada:
La primera línea contiene un número entero n, lo que indica que hay n números de identificación
Las n líneas restantes, cada línea contiene un número de identificación.
Ejemplo de entrada:
5
466272307503271156
215856472207097978
234804580401078365
404475727700034980
710351408803093165
producción
Descripción de salida:
Números de identificación ordenados de mayor a menor por fecha de nacimiento, uno por línea
Muestra de salida: 4662 7230750 3271156 710351408803093165 215856472207097978 234804580401078365
404475727700034980
SUGERENCIA: Límite de tiempo: 1,0 s Límite de memoria: 256,0 MB
n<=100000
Ideas para resolver problemas
Primero puede interceptar la cadena de cumpleaños de la tarjeta de identificación y ordenarla, y luegoOrdene el tamaño de la tarjeta de identificación (esto garantiza que cuando los cumpleaños sean los mismos, la salida también se basará en el tamaño de la tarjeta de identificación)), y finalmente envíe las tarjetas de identificación en orden según el tamaño del cumpleaños.
código
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
String []a=new String[m];
for (int i=0;i<m;i++){
a[i]=scanner.next(); //输入数据
}
String []b=new String[m];
for (int j=0;j<m;j++){
b[j]=a[j].substring(6,14); //截取生日
}
Arrays.sort(b); //对生日进行排序
Arrays.sort(a); //对身份证的前数字的大小来排序
for (int k=m-1;k>=0;k--){
for (int n=m-1;n>=0;n--){
if (a[n].substring(6,14).equals(b[k])){
//依次输出身份证排序大且生日排序大的身份证
System.out.println(a[n]);
}
}
}
}
}