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