📜  344. 反转字符串 c++ (1)

📅  最后修改于: 2023-12-03 14:59:05.028000             🧑  作者: Mango

344. 反转字符串

这是一道经典的字符串反转问题,给定一个字符串,将其反转并输出。这个问题可以通过多种方式解决,包括使用双指针、首位交换等方法。

双指针解法
解题思路

双指针法是一种常用的解决字符串反转问题的方法。首先,我们定义两个指针,一个指向字符串的开头,另一个指向结尾。然后我们交换两个指针所指向的字符,然后两个指针分别向中间移动,重复上述过程,直到指针相交为止。

代码实现
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函数,而首尾交换法则需要用到一个临时变量。这两个方法都是常见的字符串反转手段,在实际应用中也有很好的适用性。

以上是本文的全部内容,希望对您有所帮助。