leetcode917. 仅仅反转字母

Posted The August

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode917. 仅仅反转字母相关的知识,希望对你有一定的参考价值。

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

输入:“ab-cd”
输出:“dc-ba”

提示:

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

思路:

  1. 首先定义两个变量begin和end,begin记录字符串的首位置,end记录字符串的尾
  2. 其次如果begin和end记录的位置都是字母时,这两个位置的字母进行交换
  3. 最后begin和end跳向下一个位置直到begin和end指向的是字母,依次往复,直到begin>=end的时,反转结束

代码如下:

class Solution 

public:
    bool isLetter(char ch) // 判断一个字符是否为字母
    
        if(ch>='a'&&ch<='z') //小写
            return true;
        if(ch>='A'&&ch<='Z')   //大写
            return true;
        return false;
    
    string reverseOnlyLetters(string s) 
    
        int begin=0; //字符串开始的位置
        int end =s.size()-1; //字符串结束的位置
        while(begin<end)
        
            while(begin<end&&!isLetter(s[begin]))  //防止越界访问(begin<end)
            
                begin++;
            
            while(begin<end&&!isLetter(s[end]))
            
                end--;
            
            swap(s[begin],s[end]);//交换字母
            begin++;
            end--;
        
        return s;//返回反转后的字符串
    
;

以上是关于leetcode917. 仅仅反转字母的主要内容,如果未能解决你的问题,请参考以下文章

leetcode917. 仅仅反转字母

LeetCode 917. 仅仅反转字母 / 1706. 球会落何处 / 537. 复数乘法

LeetCode 917. Reverse Only Letters (仅仅反转字母)

Leetcode-917 Reverse Only Letters(仅仅反转字母)

「 每日一练,快乐水题 」917. 仅仅反转字母

「 每日一练,快乐水题 」917. 仅仅反转字母