LeetCode se refiere a la Oferta 05. Reemplazar espacios

Implemente una función para reemplazar cada espacio en la cadena s con "% 20".

El método más simple es ordenar fuera de lugar, atravesar la cadena una vez y almacenarla en la cadena de resultados, por lo que la complejidad del espacio es O (n).

Si se requiere ordenar en el lugar, cada vez que se atraviesa un espacio, el contenido después del espacio se mueve hacia atrás dos espacios para almacenamiento %20, por lo que la complejidad del tiempo es O (n²). También puede recorrer la cadena una vez para calcular la longitud de la nueva cadena y luego copiarla de atrás hacia adelante, de modo que la complejidad del tiempo se reduzca a O (n):

class Solution {
    
    
public:
    string replaceSpace(string s) {
    
    
        int newSz = 0;
        for (char c : s) {
    
    
            if (c == ' ') {
    
    
                newSz += 3;
            } else {
    
    
                ++newSz;
            }
        }

        int oldSz = s.size();
        s.resize(newSz);
        --oldSz;
        --newSz;
        while (newSz != oldSz) {
    
    
            if (s[oldSz] != ' ') {
    
    
                s[newSz--] = s[oldSz--];
            } else {
    
    
                --oldSz;
                s[newSz--] = '0';
                s[newSz--] = '2';
                s[newSz--] = '%';
            }
        }

        return s;
    }
};

Supongo que te gusta

Origin blog.csdn.net/tus00000/article/details/112968661
Recomendado
Clasificación