1、解题思路

  1. 直接反转:遍历字符串,从最后一个字符到第一个字符依次取出,构建新的反转字符串。这种方法直观且易于实现。
  2. 利用语言特性:一些语言提供了直接反转字符串的方法,可以简单调用。
  3. 双指针法:使用两个指针分别指向字符串的首尾,交换字符并向中间移动,直到指针相遇。

2、代码实现

C++
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 反转字符串
     * @param str string字符串
     * @return string字符串
     */
    string solve(string str) {
        // write code here
        int left = 0;
        int right = str.size() - 1;
        while (left < right) {
            swap(str[left], str[right]);
            left++;
            right--;
        }
        return str;
    }
};

Java
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 反转字符串
     * @param str string字符串 
     * @return string字符串
     */
    public String solve (String str) {
        // write code here
        char[] chars = str.toCharArray();
        int left = 0;
        int right = chars.length - 1;
        while (left < right) {
            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;
            left++;
            right--;
        }
        return new String(chars);
    }
}

Python
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 反转字符串
# @param str string字符串 
# @return string字符串
#
class Solution:
    def solve(self , str: str) -> str:
        # write code here
        return str[::-1]

3、复杂度分析

  • 时间复杂度:O(n),需要遍历字符串一次。
  • 空间复杂度:O(n),需要额外的空间存储反转后的字符串(如构建新字符串或字符数组)。如果使用双指针法并在原字符串上操作,空间复杂度可优化为O(1)。