preguntas de la entrevista de compresión de cuerdas 01.06

Descripción Asunto:

la compresión de cuerdas. Utilizando el número de caracteres que se repiten, escrito en una manera de lograr la compresión básica cadena. Por ejemplo, la cadena se convierte en aabcccccaaa a2b1c5a3. Si la cadena "comprimido" no son más cortos, se devuelve la cadena original. Usted puede asumir la cadena contiene sólo las letras mayúsculas (A a Z).

Ejemplo 1:

 输入:"aabcccccaaa"
 输出:"a2b1c5a3"

Ejemplo 2:

 输入:"abbccd"
 输出:"abbccd"

Él explica : "abbccd" comprimido como "a1b2c2d1", la longitud de la cadena es más larga que la original.

Tip longitud de la cadena en el rango [0, 50000]:.


1 Ideas de resolución de problemas:

  1. Contar el número de veces que aparece el mismo carácter.
  2. Estadísticas adyacentes al carácter pesado después de caracteres
  3. junto con una lista de carácter digital, y luego el producto resultante se convierte en una cadena

Código 1:

class Solution(object):
    def compressString(self, S):
        if len(S) == 0:   # 当 S = ""时
            return S

        j = 0
        countj = 1
        temp = []
        temp2 = []
        for i in range(len(S)-1):
            if S[i] == S[i+1]:
                countj += 1
            else:
                temp.append(countj)
                j += 1
                countj = 1
        temp.append(countj)     # 依次统计相同字符出现的次数

        k = 0
        for i in range(len(S)-1):
            if S[i] != S[i+1]:
                k = i+1
                temp2.append(S[i])
        temp2.append(S[k])     # 依次去重相邻字符

        temp3 = []
        for i in range(len(temp)):
            temp3.append(temp2[i]+str(temp[i]))
        temp3 = ''.join(list(temp3))  # 将列表转换为字符串

		return temp3 if len(temp3) < len(S) else S

s = Solution()
S = "aabcccccaaa"
print(s.compressString(S))

2 Ideas de resolución de problemas:

El mismo método de compresión cadena de caracteres es comprimir el número de veces que aparecen caracteres consecutivos +. Si, se devuelve cadena comprimida la longitud de cadena corta después de la compresión, de lo contrario mantener la cadena original, por lo que podemos simular el proceso de construcción de una cadena.


Código 2:

De: estancia web oficial botón

class Solution:
    def compressString(self, S: str) -> str:
        if not S:
            return ""
        ch = S[0]
        ans = ''
        cnt = 0
        for c in S:
            if c == ch:
                cnt += 1
            else:
                ans += ch + str(cnt)
                ch = c
                cnt = 1
        ans += ch + str(cnt)
        return ans if len(ans) < len(S) else S

s = Solution()
S = "aabcccccaaa"
print(s.compressString(S))

Título Fuente:
preguntas de la entrevista de compresión de 01.06 cuerdas.

Publicados 333 artículos originales · ganado elogios 36 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_43283397/article/details/104893254
Recomendado
Clasificación