471. Codificar cadena con la longitud más corta

471 Encode String With Shortest Length

http://www.cnblogs.com/grandyang/p/6194403.html

Solución: DP

Idea:
crea una matriz DP bidimensional, donde dp [i] [j] representa la forma abreviada de la cadena s en el rango [i, j] (si la forma abreviada es más larga que la cadena de caracteres secundarios, entonces mantenga la subcadena ), entonces si la longitud de la cadena s es n, el resultado final que necesitamos se almacena en dp [0] [n-1], entonces necesitamos atravesar todas las subcadenas de s, Para cualquier subcadena [i, j] , lo dividimos en dos segmentos con una posición arbitraria k en el medio, comparamos dp [i] [k] más la longitud total de dp [k + 1] [j] y dp La longitud de [i] [j], asigna la cadena más pequeña a dp [i] [j], entonces todo lo que tenemos que hacer es tomar la subcadena t en el rango [i, j] en s para fusionar. El método de fusión es que agregamos una t después de la cadena extraída t, y luego buscamos la segunda posición inicial de la subcadena t. Si la segunda posición inicial es menor que la longitud de t, entonces t Contiene cadenas repetidas, por ejemplo, t = 'abab', luego t + t = 'abababab', encontramos la posición donde la segunda t aparece en 2, menos que la longitud de t 4, lo que indica que hay t Repetidamente, el número de repeticiones es t.size () / pos = 2, luego tenemos que poner el lugar repetido entre paréntesis, tenga en cuenta que la subcadena no se puede colocar directamente en los corchetes, pero deben ser de dp Se quita la cadena de la posición correspondiente, porque la parte repetida puede haber sido escrita como una abreviatura, como el ejemplo 5 en el título. Si t = 'abc', entonces t + t = 'abcabc', encontramos la posición donde aparece la segunda t en el 3, que es igual a la longitud 3 de t, lo que indica que no hay repetición en t, luego reemplaza sigue siendo t. Luego comparamos la longitud de la cadena que obtuvimos en replace y dp [i] [j], y asignamos la longitud menor a dp [i] [j], la complejidad de tiempo es O (n).3), la complejidad del espacio es O (n2)
Complejidad temporal: O (N ^ 3) Complejidad espacial: O (N ^ 2)



Código de solución:



|_+_|