Oferta probar la seguridad [32], el número mínimo de matriz dispuestas

título Descripción

Introduzca un array entero positivo, el conjunto de todos los números dispuestos en un número empalmados juntos, el empalme puede imprimir todos los números de uno más pequeño. 3,32,321 matriz de entrada} {por ejemplo, imprimir el número mínimo de tres números puede estar dispuesto para 321.323.

Una solución a un problema: DFS
1  // tienda atravesada números de ciclo primeros 
2      privada  estática  int [] los nums;
 . 3      // bandera está atravesada, atravesada es 1, de lo contrario 0 
4.      Privada  estática Entero [] libro;
 . 5      // para que los resultados peso 
6.      privada  estática HashSet <String> Resultado = new new HashSet <String> ();
 . 7      pública  estática cadena PrintMinNumber ( int [] números) {
 8.          ArrayList <String> Lista = nuevos nueva ArrayList <String> ();
 . 9          IF (números. == 0 longitud ) {
 10             retorno  nulo ;
 . 11          }
 12 es          los nums = new new  int [numbers.length];
 13 es          libro = nuevo nuevo Entero [numbers.length];
 14          // tipo entero de matriz de almacenamiento nula predeterminada, no 0, por lo que para inicializar, clara 
15          para ( int i = 0; I <book.length; I ++ ) {
 16              libro [I] = 0 ;
 . 17          }
 18 es          DFS (números, 0 );
 . 19          list.addAll (Resultado);
 20 es          el Collections.sort (Lista);
 21 es          int size = list.size ();
22          para ( int i = 0; i <tamaño; i ++ ) {
 23              System.out.println (list.get (i));
24          }
 25          de retorno list.get (0 );
26      }
 27      privado  estáticas  void dfs ( int [] arr, int paso) {
 28          si (paso == arr.Length) {
 29              Cadena str = "" ;
30              para ( int i = 0; i <nums.length; i ++ ) {
 31                  str + = nums [i];
32              }
33 se              result.add (STR);
 34 es              el retorno ;
 35          }
 36          // iterar a través de toda la secuencia, para tratar todas las posibles 
37 [          para ( int i = 0; I <arr.Length; I ++ ) {
 38 es              SI (Libro [I] = 0 = ) {
 39                  los nums [STEP] = ARR [I];
 40                  libro [I] = 1. ;
 41 es                  DFS (ARR ,. 1 + PASO );
 42 es                  libro [I] = 0 ;
 43 es              }
 44 es          }
 45      }
Solución dos preguntas: compareTo ()
1  público  estáticas cadena PrintMinNumber01 ( int números []) {
 2          Arrays.sort (números);
3          Cadena ans = "" ;
4          para ( int num: números) {
 5              ans = (ans + num) .compareTo (num + ans) <0? (ans + num): (num + ans);
6          }
 7          retorno American National Standard;
8      }
Solución tres preguntas: Collections.sort ()
1  pública  estática Cadena PrintMinNumber02 ( int [] números) {
 2          int len = numbers.length;
3          = cadena de caracteres s "" ;
4          ArrayList <Integer> list = nuevo ArrayList <> ();
5          para ( int i = 0; i <len; i ++ ) {
 6              list.add (números de [i]);
7          }
 8          // 集合类工具Collections.sort (List <T> lista, Comparador <? Super T> c)对列表进行排序
9          Collections.sort (lista, nueva Comparador <Integer> () {
10              @ Override
 11              pública  int comparar (str1 entero, entero str2) {
 12                  Cadena s1 = str1 + "" + str2;
13                  Cadena s2 = str2 + "" + str1;
14                  de retorno s1.compareTo (s2);
15              }
 16          });
17          para ( int j: lista) {
 18              s + = j;
19          }
 20          de retorno s;
21      }

prueba:

1  público  estáticas  void principales (String [] args) {
 2          int [] num = {3,32,321 };
3          Cadena printMinNumber = PrintMinNumber02 (num);
4          System.out.println (printMinNumber);
5      }
 6输出: 321323

 

Supongo que te gusta

Origin www.cnblogs.com/Blog-cpc/p/12445204.html
Recomendado
Clasificación