
切片法:最简洁常用
Python 中用 s[::-1] 可直接反转字符串,底层基于序列切片机制,语法简洁、效率高、可读性强,是面试中最常被期望写出的解法。
示例:
s = "hello"
reversed_s = s[::-1] # 结果为 "olleh"
reversed() + join():语义清晰
reversed() 返回一个反向迭代器,需配合 ''.join() 转为字符串。虽比切片稍慢(因多一次迭代和拼接),但逻辑明确,体现对内置函数的理解,适合强调可读性或需兼容其他可迭代对象的场景。
示例:
s = "world"
reversed_s = ''.join(reversed(s)) # 结果为 "dlrow"
双指针原地交换(仅限列表):考察算法思维
字符串在 Python 中不可变,无法真正“原地”反转。但面试中常要求先转为列表,再用双指针从两端向中间交换,最后拼回字符串。重点考察对索引操作、循环边界和可变/不可变对象的理解。
关键点:
- 使用 list(s) 转换为字符列表
- 左指针 i = 0,右指针 j = len(lst) - 1
- 循环条件为 i ,交换后 i += 1, j -= 1
- 最后用 ''.join(lst) 还原
递归法:理解调用栈与边界条件
适用于展示递归思想,但实际不推荐(易栈溢出、效率低)。核心是:空串或单字符直接返回;否则返回末字符 + 递归处理前面子串。
立即学习“Python免费学习笔记(深入)”;
示例:
def reverse_str(s):
if len(s)
return s
return s[-1] + reverse_str(s[:-1])
注意:s[:-1] 每次新建子串,时间空间开销较大,面试中需主动说明该缺陷。










