• 125. Valid Palindrome


    原文题目:
    125. Valid Palindrome
    读题:

    该题目就是给定一组字符串,然后只检查字符串中的字母和数字,并且忽略字母的大小写,然后判断是否为回文

    思路:

    解法一:循环遍历字符串,将非字母非数字的字符用''直接替换掉得到纯字母数字字符串,然后忽略大小写lower()或者upper()判断是否为回文

    该解法时间复杂度不符合leetcode的要求,运行时间超时

    解法二:给定两个指针,指针1从前往后遍历,指针2从后往前遍历,碰到非字母非数字字符则跳过,然后依次比较,如果有不等的则不是回文,该解法已经提交AC了

    '''解法一'''
    class Solution(object):
        def isPalindrome(self, s):
            """
            :type s: str
            :rtype: bool
            """
            if not s:
                return True
            for char in s:
                if not char.isalpha() and not char.isdigit(): #非数字非字母
                    s = s.replace(char,'')   #替换
            res = s.upper() #转为大写字母
            result = True if res == res[::-1] else False #res[::-1]就是将res翻转
            return result
    
    '''解法二'''
    class Solution(object):
        def istarget(self, char):
            if char.isdigit() or char.isalpha():
                return True
            return False
        def isPalindrome(self, s):
            """
            :type s: str
            :rtype: bool
            """
            if not s:
                return True
            length = len(s)
            i = 0
            j = length -1
            while i < j:
                if self.istarget(s[i]) and self.istarget(s[j]): #同时为数字或者字母
                    if s[i].lower() != s[j].lower():
                        return False
                    i += 1
                    j -= 1
                elif self.istarget(s[i]) and not self.istarget(s[j]): #后指针非数字非字母跳过
                    j -= 1
                elif not self.istarget(s[i]) and self.istarget(s[j]): #前指针非数字非字母跳过
                    i += 1
                else:  #同时为非数字非字母
                    i += 1
                    j -= 1
            return True
    
    '''解法三'''
    class Solution(object):
        def isPalindrome(self, s):
            """
            :type s: str
            :rtype: bool
            """
            cleanlist = [c for c in s.lower() if c.isalnum()]
            return cleanlist == cleanlist[::-1]
    

      

  • 相关阅读:
    ARP攻击原理与解决
    如何查看数据库各种表oracle
    MyEclipse 8.0注册码
    oracle数据库导入导出
    输出设备已满或不可用, 归档程序无法归档重做日志[oracle解决方法]
    句柄以及对象的比较java
    shutdown immediate 后无法启动实例问题解决
    马云经典语录
    海量数据处理分析_BI
    数据库迁移方案
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8006825.html
Copyright © 2020-2023  润新知