leedcode 验证回文串

自己写的:

class Solution:
    def isPalindrome(self, s: str):
        # 将字符串转换为小写,以便进行大小写不敏感的比较
        s_lower = s.lower()
        
        # 获取字符串的长度
        n = len(s_lower)
        
        # 创建一个空列表,用于存储字母和数字
        s_list = []
        
        # 遍历字符串,将字母和数字添加到列表中
        for i in range(n):
            if s_lower[i].isalpha() or s_lower[i].isdigit():
                s_list.append(s_lower[i])
        
        # 如果列表为空,说明原始字符串中没有字母和数字,是回文字符串
        if not s_list:
            return True
        
        # 获取过滤后的列表的长度
        n_list = len(s_list)
        
        # 如果过滤后的列表只包含一个字符,也是回文字符串
        if n_list == 1:
            return True
        
        # 初始化首尾指针
        first = 0
        last = n_list - 1
        
        # 使用双指针法检查是否为回文字符串
        while first <= last:
            if s_list[first] == s_list[last]:
                first += 1
                last -= 1
            else:
                return False
        
        # 如果所有字符都匹配,是回文字符串
        return True

gpt改进:

class Solution:
    def isPalindrome(self, s: str):
        # 将字符串转换为小写,以便进行大小写不敏感的比较
        s_filtered = [char.lower() for char in s if char.isalnum()]

        # 如果过滤后的列表为空或者只包含一个字符,是回文字符串
        return s_filtered == s_filtered[::-1]

 

posted @ 2024-02-26 10:31  Junior_bond  阅读(13)  评论(0)    收藏  举报