LEETCODE | PYTHON | 125 | 验证回文串

LEETCODE | PYTHON | 125 | 验证回文串

1. 题目

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 代码

class Solution:
    def isPalindrome(self, s: str) -> bool:

        #设定双指针
        left = 0
        right = len(s) - 1

        #遍历判断
        while left<right:

            leftchr = s[left]
            rightchr = s[right]

            #如果是大写字母
            if leftchr >= 'A' and leftchr <= 'Z':
                leftchr = chr(ord(leftchr)-ord('A')+ord('a'))
                
            if rightchr >= 'A' and rightchr <='Z':
                rightchr = chr(ord(rightchr)-ord('A')+ord('a'))
                
            
            #判断是否是双小写字母
            if ((leftchr >= 'a' and leftchr <= 'z') or (leftchr >= '0' and leftchr <= '9')) and ((rightchr >= 'a' and rightchr <= 'z') or (rightchr >= '0' and rightchr <= '9')):

                if leftchr != rightchr:
                    return False
                else:
                    left = left + 1
                    right = right - 1
           
            #若right不是小写字母
            elif (leftchr >= 'a' and leftchr <= 'z') or (leftchr >= '0' and leftchr <= '9'):

                right = right - 1
                continue
            
            #若left不是小写字母
            elif (rightchr >= 'a' and rightchr <= 'z') or (rightchr >= '0' and rightchr <= '9'):
                
                left = left + 1
                continue
            
            #若两方都不是
            else:
                left = left + 1
                right = right - 1
        
        return True

            

你可能感兴趣的:(leetcode-python,leetcode,算法,职场和发展)