企业网站建设公司名称,网站设计策划书模板,网站在建设中是什么意思,网上服务平台官网入口在学习之余对于知识的巩固也尤为重要#xff0c;不论难度高低#xff0c;都会对代码的理解有所加深#xff0c;下面我们开始练习 思路解析 关于本题的核心思路就是如何判断字符串中元素是否为字母以及如何遍历字符串以达到仅反转的目的#xff0c;这里用到的知识就是关于 s… 在学习之余对于知识的巩固也尤为重要不论难度高低都会对代码的理解有所加深下面我们开始练习 思路解析 关于本题的核心思路就是如何判断字符串中元素是否为字母以及如何遍历字符串以达到仅反转的目的这里用到的知识就是关于 string 类的下标访问元素下面我们用代码对其解释 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 left 0,right s.size() - 1;while(left right){while(left right !isLetter(s[left])){left;}while(left right !isLetter(s[right])){right--;}swap(s[left],s[right--]);}return s;}
}; 代码分析 1. 首先写一个函数判断字符串元素是否为字母当然也可以使用库中定义好的 isalpha 函数这里为了好理解就直接手写一个函数进行判断即可 2. 这里使用 string 类中的 string::size 接口拿到了字符串长度然后开始首尾向中间遍历 3. 注意判断时为了避免越界要将 left right 写在每一个循环中 4. 最后双指针相遇时即遍历完成这时使用库中定义好的 swap 函数交换即可