LeetCode 125. Valid Palindrome 题解
LeetCode 125. Valid Palindrome 题解题目描述给定一个字符串验证它是否是回文串只考虑字母和数字字符可以忽略字母的大小写。示例 1输入: A man, a plan, a canal: Panama 输出: true 解释amanaplanacanalpanama 是回文串示例 2输入: race a car 输出: false 解释raceacar 不是回文串解题思路双指针法使用左右指针分别从字符串的两端向中间移动跳过非字母和数字的字符比较左右指针指向的字符忽略大小写代码实现def isPalindrome(s): left, right 0, len(s) - 1 while left right: # 跳过非字母和数字的字符 while left right and not s[left].isalnum(): left 1 while left right and not s[right].isalnum(): right - 1 # 比较字符忽略大小写 if s[left].lower() ! s[right].lower(): return False left 1 right - 1 return True复杂度分析时间复杂度O(n)空间复杂度O(1)测试案例# 测试案例 1 assert isPalindrome(A man, a plan, a canal: Panama) True # 测试案例 2 assert isPalindrome(race a car) False # 测试案例 3 assert isPalindrome() True # 测试案例 4 assert isPalindrome(a) True总结本题是字符串处理的经典问题。关键点双指针技巧字符类型判断大小写处理边界条件处理通过本题可以深入理解双指针在字符串处理中的应用。