Two pointers, in place.
As we are ask for a palindrome, it is intuitive to track from
both:
start of string
and end of string
Because we are asked for minimum, apply minimum character
As we are ask for a palindrome, it is intuitive to track from
both:
 * start of string
 * and end of string
Because we are asked for minimum, apply minimum character if the two compared elements are different.
O(N)

# Code
```cpp []
class Solution {
public:
    string makeSmallestPalindrome(string s) {
        for (size_t l = 0, r = s.size() - 1; l < r; ++l, --r) {
            if (s[l] != s[r]) {
                s[l] = s[r] = std::min(s[l], s[r]);                
            }
        }
        return s;
    }
};
```
['Two Pointers', 'C++']