题目描述:
编写一个函数,其作用是将输入的字符串反转过来。
示例 1:
输入: "hello" 输出: "olleh"
示例 2:
输入: "A man, a plan, a canal: Panama" 输出: "amanaP :lanac a ,nalp a ,nam A"
相关话题:双指针;字符串。
相似题目:345 反转字符串中的元音字母;541 反转字符串II
解题思路:
- 建立两个指针,
- 一个从0开始,从前往后遍历;
- 一个从最后一个元素开始,从后往前 遍历;
- 交换两个指针指向的元素;
- 当两个指针相遇时,循环结束。
class Solution {
public:
string reverseString(string s) {
int i = 0, j = s.length() - 1;
// vector<char> cvec;
while(i < j){
char temp;
temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
return s;
}
};
技术要点:双指针。
总结:对于这种反转类的题目,尤其是以中间元素为座标轴的反转,用双指针进行解决是目前比较常见的一种解决方案。当两个指针相遇时,循环结束。注意,本题目不需要新创建一个数组或向量来存储,只需要在需要在原来的数组上操作即可。