当前位置: 首页 > 后端技术 > Python

LeetCode125.验证回文-蟒蛇

时间:2023-03-26 01:09:45 Python

125。ValidatePalindromeTitle来源:力扣(LeetCode)https://leetcode-cn.com/problems/valid-palindromeTitle给定一个字符串,验证是否是回文串,只考虑字母和数字,字母大小写可以忽略。解释:在这道题中,我们定义一个空字符串作为一个有效的回文。示例1:输入:“一个人,一个计划,一条运河:巴拿马”输出:true示例2:输入:“raceacar”输出:false解题思路:筛选+判断,双指针之前也验证过了回文串问题,而在这道题中,主要需要解决的部分是给定的字符串中不仅包含字母和数字,还包含空格等字符。[注意:在本题中,我们将空字符串定义为有效的回文。],这样的描述也降低了问题的难度。这说明在判断的时候可以忽略空串。再看例子1:Input:"Aman,aplan,acanal:Panama"Output:true可以看到判断的时候没有考虑大小写,其他字符也忽略了,只关注字母字符或者if该数字是一个回文。所以在这里,如果要对给定的字符串进行判断,就必须先对其他字符进行过滤处理。这里,对于Python,检查字符串的isalnum()方法的使用。isalnum()是string的一个方法,用来检查字符串是否由字母和数字组成。语法如下:str.isalnum()对于返回值,如果str至少有一个字符且所有字符都是字母或数字,则返回True,否则返回False。现在尝试用最暴力的方法过滤原字符串,翻转比较字符串是否相同。代码如下:defisPalindrome(self,s:str)->bool:s_filter=''.join(ch.lower()forchinsifch.isalnum())returns_filter==s_filter[::-1]这里,也可以不翻转字符串进行判断,使用双指针,代码如下:defisPalindrome(self,s:str)->bool:s_filter=''.join(ch.lower()forchinsifch.isalnum())length=len(s_filter)left=0right=length-1whileleftbool:length=len(s)left=0right=length-1whileleft