917. Reverse Only Letters
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:
S.length <= 100
33 <= S[i].ASCIIcode <= 122
S
doesn't contain\
or"
只翻转英文字母。
#include<vector> #include <cstdlib> #include<iostream> #include <unordered_set> #include <algorithm> #include<string> using namespace std; class Solution { public: string reverseOnlyLetters(string S) { int n = S.size(); int i = 0, j = n - 1; while (i < j) { while (!isalpha(S[i]) && i < j) i++; while (!isalpha(S[j]) && j > i) j--; //std::cout << "S[i] " << S[i] << " S[j] " << S[j] << endl; // char tmp = S[i]; // S[i] = S[j]; // S[j] = tmp; swap(S[i], S[j]); i++, j--; } return S; } }; int main() { string S = "Test1ng-Leet=code-Q!"; Solution solution; std::cout << solution.reverseOnlyLetters(S) << std::endl; return 0; }
Your runtime beats 100.00 % of cpp submissions