美文网首页
验证回文字符串

验证回文字符串

作者: 耀話你知 | 来源:发表于2018-08-10 18:20 被阅读0次

    参照网上大神写的代码。用python封装好的就是快呀,应该是底层调用c的缘故吧
    class Solution(object):
    def isPalindrome(self, s):
    """
    :type s: str
    :rtype: bool
    """
    s_new = filter(str.isalnum,str(s)).upper()
    return s_new == s_new[::-1]
    相比之下,一些没用封装的,按照逻辑一步步来的,似乎代码没毛病,但与运行就是慢。164ms的。
    class Solution(object):
    def isPalindrome(self, s):
    """
    :type s: str
    :rtype: bool
    """
    if s == '':
    return True
    # lis = filter(lambda x:ord(x) in range(97,123) or ord(x) in range(48,58),list(s.lower()))
    # lis_d = [i for i in lis]
    s = s.lower()
    lis_d = [i for i in s if ord(i) in range(97,123) or ord(i) in range(48,58)]
    if lis_d != lis_d[::-1]:
    return False
    return True

    【学到两个新函数】
    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
    注意: Pyhton2.7 返回列表,Python3.x 返回迭代器对象,具体内容可以查看:Python3 filter() 函数

    Python isalnum()方法
    isalnum() 方法检测字符串是否由字母和数字组成。
    str.isalnum()
    注意str应该要是ascii编码,不然
    new_s = list(filter(str.isalnum,s.lower()))时候会报错:
    TypeError: descriptor 'isalnum' requires a 'str' object but received a 'unicode'
    改成new_s = list(filter(str.isalnum,str(s.lower())))
    就好了
    python3的时候不用。

    相关文章

      网友评论

          本文标题:验证回文字符串

          本文链接:https://www.haomeiwen.com/subject/xqelbftx.html