344. 反转字符串

344. 反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

示例 1:

输入:s = [“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
示例 2:

输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-string

class Solution {
public:
    void reverseString(vector<char>& s) {
        for(int i=0,j=s.size()-1;i<=j;i++,j--){
            char tmp=s[i];
            s[i]=s[j];
            s[j]=tmp;
        }
    }
};

这是一个C++中的类Solution,其中定义了一个成员函数reverseString,用于将给定的字符数组vector& s进行反转。

函数实现使用了双指针的方法,通过一个循环来交换数组中的元素。循环中的变量i从数组的开头开始,变量j从数组的末尾开始,它们逐步向中间移动。循环条件是i <= j,当ij相遇时,循环结束。

在循环中,首先将数组中索引i处的字符保存到临时变量tmp中。然后,将索引j处的字符赋值给索引i处,将临时变量tmp的值赋给索引j处。通过这样的交换操作,数组中的字符逐渐被反转。

以下是函数实现的详细解析:

  1. 创建变量i,初始值为0,指向数组的第一个字符。
  2. 创建变量j,初始值为数组大小减1,指向数组的最后一个字符。
  3. 进入循环,循环条件是i <= j
  4. 在每次循环中,执行以下步骤:
    • 创建临时变量tmp,保存索引i处的字符。
    • 将索引j处的字符赋值给索引i处。
    • 将临时变量tmp的值赋值给索引j处。
    • i递增1,将j递减1,将指针向中间移动一步。
  5. 循环结束后,数组中的字符已被反转。

通过调用reverseString函数,并传入需要反转的字符数组,即可实现字符数组的反转。

你可能感兴趣的:(字符串)