@valid 验证list_leetcode第125题验证回文串

321d7699964b5541023950575b936269.gif

点击关注,我们共同每天进步一点点!

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

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

示例 1:

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

示例 2:

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

来源:力扣(LeetCode)
链接:
https://leetcode-cn.com/problems/valid-palindrome

解答

def is_palindrome(s):
    """
    利用快排的思想:左右两个指针向中间移动,如果指针所指不是数字和字母,则再次移动1位;
    然后对比2个指针的字符是否相等,以此循环
    :type s: str
    :rtype: bool
    """
    if s == '':
        return True
    i, j = 0, len(s)-1
    while i        while i and (not s[i].isalnum()):
            i += 1
        while i and (not s[j].isalnum()):
            j -= 1
        if s[i].lower() != s[j].lower():
            return False
        i += 1
        j -= 1
    return True


def is_palindrome1(s):
    """
    此方法简单明了
    :type s: str
    :rtype: bool
    """
    ls=[]
    for a in s:
        if a.isalnum():
            ls.append(a.lower())
    if ls==list(reversed(ls)):
        return True
    return False


def is_palindrome2(s):
    """
    参考大神写法,使用filter函数,更加简洁
    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
    该函数接收两个参数,第一个为函数,第二个为序列
    :type s: str
    :rtype: bool
    """
    s = ''.join(filter(str.isalnum, s)).lower()
    if s == s[::-1]:
        return True
    return False


if __name__ == "__main__":
    s = "A man, a plan, a canal: Panama"
    s1 = "race a car"
    s2 = '.,'
    print is_palindrome2(s2)
4ee20025582df6b2ae5133fce7676a9e.png 86be1c64d48143b6d8db1e30dc2a3a59.gif

喜欢请关注,有用请转发~

升职、加薪、无漏测-点“在看”

0cde6c852e912a206283d0233cadb921.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值