📅  最后修改于: 2023-12-03 14:59:05.028000             🧑  作者: Mango
这是一道经典的字符串反转问题,给定一个字符串,将其反转并输出。这个问题可以通过多种方式解决,包括使用双指针、首位交换等方法。
双指针法是一种常用的解决字符串反转问题的方法。首先,我们定义两个指针,一个指向字符串的开头,另一个指向结尾。然后我们交换两个指针所指向的字符,然后两个指针分别向中间移动,重复上述过程,直到指针相交为止。
class Solution {
public:
void reverseString(vector<char>& s) {
int i = 0, j = s.size() - 1;
while (i < j) {
swap(s[i], s[j]);
++i;
--j;
}
}
};
另一种常见的字符串反转方法是首尾交换法。首先,初始化头尾两个指针分别指向字符串的开头和结尾。然后,交换两个指针所指向的字符,其中头指针向后移动一个位置,尾指针向前移动一个位置,重复交换过程,直到头指针超过尾指针。
class Solution {
public:
void reverseString(vector<char>& s) {
int i = 0, j = s.size() - 1;
while (i < j) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
++i;
--j;
}
}
};
这个问题可以通过多种方式解决,本文介绍了双指针和首尾交换两种方法。双指针法需要用到swap函数,而首尾交换法则需要用到一个临时变量。这两个方法都是常见的字符串反转手段,在实际应用中也有很好的适用性。
以上是本文的全部内容,希望对您有所帮助。