如果你正在准备 Python 开发岗面试而且希望在短时间内稳定拿分这篇字符串专题你可以直接拿去复习。上一篇我们练了 Array这一篇进入 Strings。字符串题目看起来“像语文题”但面试官考察的依旧是同一套核心能力能不能快速识别题目模型能不能写出简洁、可靠的代码能不能把复杂度讲清楚能不能处理边界条件和追问。为什么 Strings 是面试高频字符串是业务开发中的常客日志处理、接口参数校验、文本匹配、数据清洗都离不开它。所以在 Python 面试里Strings 题目出现频率非常高而且经常作为热身题或第一题。如果你只有 30 分钟建议优先吃透下面两题Reverse StringFirst Unique Character in a String这两题分别代表了字符串中的两种基础能力双指针原地处理哈希统计与二次遍历定位今天的突击目标不要贪多先把这四件事做到位不看答案能独立写出 AC复杂度分析能脱口而出能说明“为什么这样做是最合适的”能主动提到常见坑点和边界情况。题目一Reverse String反转字符串题目描述给你一个字符数组s请你将其反转。要求你必须原地修改输入数组并且只使用O(1)的额外空间。示例输入[h,e,l,l,o]输出[o,l,l,e,h]输入[H,a,n,n,a,h]输出[h,a,n,n,a,H]面试中的思考路径不少同学会先想到s[::-1]这在 Python 里很常见但它会创建新对象。题目明确要求 in-place原地所以要用双指针交换left从头开始right从尾开始每轮交换后分别向中间移动当left right时结束。Python 参考实现fromtypingimportListclassSolution:defreverseString(self,s:List[str])-None: 不返回任何值直接在原数组上修改。 left,right0,len(s)-1whileleftright:s[left],s[right]s[right],s[left]left1right-1复杂度分析时间复杂度O(n)每个元素最多参与一次交换空间复杂度O(1)只使用常数个额外变量。面试易错点用切片或reversed()生成新列表不满足原地修改要求忘记说明为什么是O(1)空间指针边界条件写错例如与混淆。题目二First Unique Character in a String字符串中的第一个唯一字符题目描述给定一个字符串s找到它的第一个不重复字符并返回它的索引。如果不存在返回-1。示例输入leetcode输出0输入loveleetcode输出2输入aabb输出-1面试中的思考路径这题最稳妥的方式是“两次遍历 哈希计数”第一次遍历统计每个字符出现次数第二次遍历按原字符串顺序找第一个计数为 1 的字符。为什么要两次因为“第一个唯一字符”强调的是顺序光统计次数还不够必须回到原序列中定位。Python 参考实现classSolution:deffirstUniqChar(self,s:str)-int:freq{}forchins:freq[ch]freq.get(ch,0)1fori,chinenumerate(s):iffreq[ch]1:returnireturn-1复杂度分析时间复杂度O(n)两次线性遍历仍是线性级别空间复杂度O(k)k为字符集大小。若限定为小写字母可视为常数级。面试易错点统计完次数后直接返回某个字符而不是索引用set去重导致顺序信息丢失没有处理“全部重复”的情况漏掉返回-1。30 分钟高效练习法Strings 版你可以按这个节奏执行5 分钟先口述两题思路不写代码10 分钟手写代码并自测示例10 分钟补上复杂度、边界条件、易错点5 分钟模拟面试表达尽量脱稿复述。重点不是“写完”而是“讲清楚你为什么这么写”。面试表达模板你可以这样说这题我会先判断是否需要保留原顺序。如果需要保序并且要快速查询我会考虑哈希表做计数或索引映射。在复杂度上我目标是时间O(n)空间根据题目约束尽量控制在O(1)或可接受范围。写完后我会重点检查边界空串、全重复、单字符、重复字符位置等。这段话对大部分字符串基础题都适用能显著提升你的表达质量。小结Strings 题目的本质并不“玄学”核心还是数据结构与遍历策略。Reverse String和First Unique Character in a String是字符串面试的基础分建议你做到代码熟练到能一遍写对复杂度分析不用停顿面试官追问时能解释设计取舍能清楚指出这题常见的错误写法。下一篇你可以继续练Linked List把“数组 字符串 链表”这三块基础打牢Python 岗算法面试会稳很多。