leetcode917. 仅仅反转字母
Posted The August
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode917. 仅仅反转字母相关的知识,希望对你有一定的参考价值。
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例:
输入:“ab-cd”
输出:“dc-ba”
提示:
- S.length <= 100
- 33 <= S[i].ASCIIcode <= 122
- S 中不包含 \\ or "
思路:
- 首先定义两个变量begin和end,begin记录字符串的首位置,end记录字符串的尾
- 其次如果begin和end记录的位置都是字母时,这两个位置的字母进行交换
- 最后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. 仅仅反转字母的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 917. 仅仅反转字母 / 1706. 球会落何处 / 537. 复数乘法
LeetCode 917. Reverse Only Letters (仅仅反转字母)