Question

Given a string S, return the "reversed" string where all characters that are not a letter stay in the same place, and all letters reverse their positions.

Example 1:

Input: "ab-cd" Output: "dc-ba"

Example 2:

Input: "a-bC-dEf-ghIj" Output: "j-Ih-gfE-dCba"

Example 3:

Input: "Test1ng-Leet=code-Q!" Output: "Qedo1ct-eeLg=ntse-T!"

Note:

  1. S.length <= 100
  2. 33 <= S[i].ASCIIcode <= 122
  3. S doesn't contain \ or "

Difficulty:Easy

Category:String

Analyze

Solution

// Solution: Two Points
// Runtimes: 4ms
class Solution {
 public:
  string reverseOnlyLetters(string S) {
    if (S.length() == 0) return "";
    int left = 0, right = S.length() - 1;

    while (left < right) {
      while (!isalpha(S[left])) ++left;
      while (!isalpha(S[right])) --right;
      if (left >= right) break;
      swap(S[left++], S[right--]);
    }
    return S;
  }
};
By guozetang            Updated: 2020-09-19 13:02:30

results matching ""

    No results matching ""