Two Pointers variation
#include <string>
#include <iostream>
using namespace std;
/*
Given a string which contains only letters. Sort it by lower case first and upper case second
*/
void sortLetters(string& letters) {
if(letters.size() <= 1) return;
int n = letters.size();
int i = 0, j = n-1;
while(i <= j) {
if(letters[i] >= 'A' && letters[i] <= 'Z') {
swap(letters[i], letters[j]);
j--;
} else
i++;
}
}
int main(void) {
string letters = "abAcD";
sortLetters(letters);
cout << letters << endl;
}