Implementación de Java de la secuencia binaria especial LeetCode 761 (problema de soporte)

761. Secuencia binaria especial

Una secuencia binaria especial es una secuencia binaria con las siguientes dos propiedades:

El número de 0 es igual al número de 1.
El número de 1s en cada prefijo de la secuencia binaria debe ser mayor o igual a 0.
Dada una secuencia binaria especial S, expresada como una cadena. Defina una operación para seleccionar primero dos subcadenas especiales consecutivas y no vacías de S, y luego intercambiarlas. (Las dos subcadenas son consecutivas si y solo si el último carácter de la primera subcadena está justo antes del primer carácter de la segunda subcadena).

Después de cualquier número de operaciones, ¿cuál es el mayor resultado de las cadenas intercambiadas en orden lexicográfico?

Ejemplo 1:

Entrada: S = "11011000"
Salida: "11100100"
Explicación: Intercambie la
subcadena "10" (aparece en S [1]) y "1100" (aparece en S [3]).
Este es el mayor resultado en orden lexicográfico después de varias operaciones.
Explicación

La longitud de S no excede de 50.
Se garantiza que S es una secuencia binaria especial que satisface la definición anterior.

PD:

既然是01子串,为什么不当成括号处理呢?

 

class Solution {
   public String makeLargestSpecial(String S) {
        StringBuilder sb = new StringBuilder();
        List<String> list = new ArrayList<>();
        int start = 0;
        int countOne = 0;
        for(int i = 0; i < S.length(); ++i) {
            countOne += S.charAt(i) == '1' ? 1 : -1;
            if(countOne == 0) {
                String str = S.substring(start + 1, i);
                list.add("1" + makeLargestSpecial(str) + "0");
                start = i + 1;
            }
        }
        Collections.sort(list);
        for(int i = list.size() - 1; i >= 0; --i) 
            sb.append(list.get(i));
        return sb.toString();
    }
}
1,830 artículos originales publicados · 30,000+ elogios · 4.86 millones de visitas

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105555913
Recomendado
Clasificación