Invertir String

Este problema consiste en invertir una cadena que se recibe como un arreglo de caracteres s. Se debe modificar el arreglo in-place y usando O(1) de memoria extra.

Solución

class Solution {
public:
    void reverseString(vector<char>& s) {
        for (int i{0}; i < s.size() / 2; i++) {
            char t = s[i];
            char v = s[s.size() - 1 - i];
            s[i] = v;
            s[s.size() - 1 - i] = t;
        }
    }
};

Se recorre solo la primera mitad del arreglo y, en cada posición i, se intercambia s[i] con su simétrica s[size - 1 - i]. Al llegar a la mitad ya se intercambiaron todos los pares, por lo que la cadena queda invertida sin usar memoria adicional.