Información del tema
Hay varias personas en el grupo y cada persona tiene una tarjeta en la mano. La tarjeta es un número entero positivo de 6 dígitos. Conecte las tarjetas para formar varios números y calcule el número más grande que se pueda formar.
- Descripción de entrada Varias cadenas de números enteros positivos separados por comas ",", independientemente de las anomalías no numéricas, el grupo puede ser de hasta 25 personas
- Salida Descripción número máximo de cadena
- Entrada de ejemplo 22,221
- Salida de muestra 22221
respuesta
El significado del título, el mayor número de puntadas.
- Los números deben organizarse
- Los valores más grandes deben clasificarse primero
- Como se muestra en el siguiente ejemplo, cuando las longitudes no son iguales, los números con el valor de empalme más grande van al frente, 22 y 221 conjuntos de números, 22221 es mayor que 22122, por lo que 22 filas 221
- Como se muestra en la siguiente figura, cuando las longitudes son iguales, los números con el valor numérico más grande están en la primera fila, 234 y 341 grupos de números, 341234 es mayor que 234341, por lo que 342 fila 234 está al frente
codificación
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
public class MostNum {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
while ((input = br.readLine()) != null) {
// 将输入字符串逗号分割,将分割后的数组转换为list
String[] numArr = input.split(",");
List<String> list = Arrays.asList(numArr);
// 对list进行排序
// 若字符串长度相等,则将数字值大的放前面 23和12比较,23排前面
// 若长度不等,比较拼接值大小,拼接值大的放前面 123和23,23123值大于12323,23排123
list.sort((next, previous) -> next.length() == previous.length() ?
previous.compareTo(next) : (previous + next).compareTo(next + previous));
// 对list中字符数字进行拼接
StringBuilder sb = new StringBuilder();
for (String num : list) {
sb.append(num);
}
System.out.println(sb);
}
}
}