• leetcode125. 验证回文串 python 简单


    125. 验证回文串

    难度简单
     
     
    给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

    说明:本题中,我们将空字符串定义为有效的回文串。

    示例 1:

    输入: "A man, a plan, a canal: Panama"
    输出: true
    

    示例 2:

    输入: "race a car"
    输出: false

    解法1:直接用双指针 硬性判断

    时间复杂度:O(|s|)O(∣s∣),其中 |s|∣s∣ 是字符串 ss 的长度。

    空间复杂度:O(|s|)O(∣s∣)。由于我们需要将所有的字母和数字字符存放在另一个字符串中,在最坏情况下,新的字符串 extit{sgood}sgood 与原字符串 ss 完全相同,因此需要使用 O(|s|)O(∣s∣) 的空间。

     暴力破解 

    class Solution:
        def isPalindrome(self, s: str) -> bool:
            contener = []
            for i in s :
                if 48 <= ord(i) <= 57 or 65 <= ord(i) <= 90 or 97 <= ord(i) <= 122:
                    contener.append(i.upper())
            left = 0
            right = -1
            if len(contener) ==1 :
                return True
    
            if len(contener)%2==1:
                while left <= len(contener)/2 - 1 :
                    if contener[left] != contener[right] :
                        return False
                    left += 1
                    right -= 1
                return True
            while left < len(contener) / 2 :
                    if contener[left] != contener[right]:
                        return False
                    left += 1
                    right -= 1
            return True
    

      

    解法二  :

      原地用双指针判断
    • 时间复杂度:O(|s|)O(s),其中 |s|s∣ 是字符串 ss 的长度。

    • 空间O(1)
    class Solution:
        def isPalindrome(self, s: str) -> bool:
            n = len(s)
            left, right = 0, n - 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 left < right:
                    if s[left].lower() != s[right].lower():
                        return False
                    left, right = left + 1, right - 1
    
            return True
  • 相关阅读:
    里氏代换原则
    依赖倒转原则
    开放-封闭原则
    如何判断对象是否死亡和类是无用的类
    Java内存区域
    Zookeeper使用场景
    zookeeper知识点总结
    前端小技术总结
    lambda表达式的使用
    Comparator进行List集合排序
  • 原文地址:https://www.cnblogs.com/Sunbreaker/p/13163578.html
Copyright © 2020-2023  润新知