class Solution {
public:
   string reverseOnlyLetters(string S) {
      int len = S.size();
      string res;
      int i = 0, j = len - 1;
      while (i < len)
      {
         char c = S[i];
         if (isalpha(c))
         {
            while (j >= 0 && !isalpha(S[j]))--j;
            res += S[j--];
         }
         else
            res += S[i];
         ++i;
      }
      return res;
   }
};