1.题目链接
力扣
2.解题思路
前后分别给两个指针 进行遍历 找到字母后就交换 然后往下走 没找到就直接往下走 注意双循环条
件
3.代码
class Solution {
public:
//判断是不是字符
bool IsChar(char ch)
{
if ((ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z'))
{
return true;
}
else
return false;
}
string reverseOnlyLetters(string s) {
//前后给两个指针 两头往中间 不是字符就++和--
int begin = 0;
int end = s.size() - 1;
while (begin < end)
{
while (begin < end && IsChar(s[begin]) == false)
{
++begin;
}
while (begin < end && IsChar(s[end]) == false)
{
--end;
}
//找到字符后交换
swap(s[begin], s[end]);
//交换后往下走
++begin;
--end;
}
return s;
}
};
4.运行结果
【C++ OJ练习】3.反转字母 完