Leetcode917.Reverse Only Letters仅仅反转字母

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。

示例 1:

输入:"ab-cd" 输出:"dc-ba"

示例 2:

输入:"a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba"

示例 3:

输入:"Test1ng-Leet=code-Q!" 输出:"Qedo1ct-eeLg=ntse-T!"

提示:

  1. S.length <= 100
  2. 33 <= S[i].ASCIIcode <= 122 
  3. S 中不包含  or "

class Solution
{
public:
    string reverseOnlyLetters(string S)
    {
        int len = S.size();
        if(len <= 1)
            return S;
        int low = 0;
        int high = len - 1;
        while(low < high)
        {
            for(; low < high; low++)
            {
                if(S[low] >= 'a' && S[low] <= 'z' || S[low] >= 'A' && S[low] <= 'Z')
                {
                    break;
                }
            }
            for(; high > low; high--)
            {
                if(S[high] >= 'a' && S[high] <= 'z' || S[high] >= 'A' && S[high] <= 'Z')
                {
                    break;
                }
            }
            if(low < high)
            {
                swap(S[low], S[high]);
                low++;
                high--;
            }
        }
        return S;
    }
};
原文地址:https://www.cnblogs.com/lMonster81/p/10433910.html