Python 字符串反转方法总结面试题

10次阅读

Python 字符串反转方法总结面试题

切片法:最简洁常用

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] 每次新建子串,时间空间开销较大,面试中需主动说明该缺陷。

text=ZqhQzanResources