python_day_12:20180813

125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
https://leetcode-cn.com/problems/valid-palindrome/description/

思路:
先把字符串中的数字和字母提取出来放到新列表中,然后从首位两个方向遍历比较元素,来判断是否是回文串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        strs=[]
        for letter in s:
            if letter.isalpha() or letter.isdigit():
                strs.append(letter.lower())
        if len(strs)>1:
            for j in range(int(len(strs)/2)+1):
                if strs[j]!=strs[-j-1]:
                    return False
        return True

 

680. 验证回文字符串 Ⅱ
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
https://leetcode-cn.com/problems/valid-palindrome-ii/description/

思路:
题目要求最多删除一个字符,先进行双向遍历判断,找出相异位置,然后生成两个子串,分别是删掉前一个相异点和后一个相异点得到,最后用“或”条件来判断两个子串是否有回文字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
    def validPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        if len(s)<=2:
            return True
        s1=""
        s2=""
 
        for i in range(len(s)//2+1):
            if s[i] != s[-i-1]:
                s1=s[:i]+s[i+1:]
                if i >0:
                    s2=s[:-i-1]+s[-i:]
                else:
                    s2=s[:-1]
                break
        return s1==s1[::-1] or s2==s2[::-1]

  

posted @   code_in_py  阅读(121)  评论(0编辑  收藏  举报
编辑推荐:
· 探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(下)
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
阅读排行:
· BotSharp 5.0 MCP:迈向更开放的AI Agent框架
· 分享 3 款基于 .NET 开源且免费的远程桌面工具
· 在线聊天系统中的多窗口数据同步技术解密
· 2025,回顾出走的 10 年
· 【保姆级教程】windows 安装 docker 全流程
点击右上角即可分享
微信分享提示