Entrevista al programador preguntas clásicas doradas de la entrevista 01.03.URL

1. Introducción al tema

URLización. Escriba un método para reemplazar todos los espacios en la cadena con% 20. Se supone que hay suficiente espacio al final de la cadena para almacenar nuevos caracteres y se conoce la longitud "real" de la cadena. (Nota: si está implementado en Java, utilice una implementación de matriz de caracteres para poder operar directamente en la matriz).

Ejemplo 1:

 Entrada: "Mr John Smith", 13
 Salida: "Mr% 20John% 20Smith"
Ejemplo 2:

 Entrada: "", 5
 Salida: "% 20% 20% 20% 20% 20"
Mensaje:

La longitud de la cadena está en el rango de [0, 500000].

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/string-to-url-lcci
Copyright es propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos ideas para resolver problemas

Detecte espacios en la cadena y reemplácelos con% 20. Si usa una cadena para completar esta pregunta, ya que la longitud de la cadena continúa aumentando, cuando excede el tamaño de espacio predeterminado del objeto de cadena, la redistribución y copia del espacio de almacenamiento provocará una sobrecarga relativamente grande . Por lo tanto, el método de solicitar memoria adicional se adopta para solicitar dinámicamente una longitud fija de memoria por adelantado para evitar el problema de la redistribución y copia del espacio de almacenamiento.

Tres, código de resolución de problemas

方法一:
class Solution {
public:
    string replaceSpaces(string S, int length) {
        //字符串存储空间的再分配和复制开销比较大
        string str;
        for(int i = 0; i < length; ++i)
        {
            if(S[i] == ' ')
                str += "%20";
            else
                str += S[i];
        }
        return str;
    }
};

方法二:
class Solution {
public:
    string replaceSpaces(string S, int length) {
        //最大3 * length + 1
        char *arr = new char[3*length + 1];
        int j = 0;
        for(int i = 0; i < length; ++i)
        {
            if(S[i] == ' ')
            {
                arr[j++] = '%';
                arr[j++] = '2';
                arr[j++] = '0';
            }
            else
                arr[j++] = S[i];
        }
        arr[j] = '\0';
        return string(arr);
    }
};

Cuatro, resultados de resolución de problemas

Supongo que te gusta

Origin blog.csdn.net/qq_39661206/article/details/105576985
Recomendado
Clasificación