LeeCode每日一题--验证回文串

  【前言】坚持日更LeeCode刷题系列

    不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!


  【题目】125.验证回文串

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

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


    示例:

    	示例 1:
    		输入: "A man, a plan, a canal: Panama"
			输出: true
 				  			 		
		示例 2:
			输入: "race a car"
			输出: false

    思路一:此题思路依然很简单,建立一个空列表,用于存储字母和数字字符,利用ASCII码来完成数据的筛选以及大小写的转换。不过注意在最后比较的时候不能直接将列表进行比较(在之前的文章中我也有提到过),列表直接进行比较的话,只会考虑元素,而不考虑元素的位置。具体代码如下:

import operator
class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        list_str = []  #用于存储字母和数字字符
        for i in range(len(s)):
            if (48<=ord(s[i])<=57) or (97<=ord(s[i])<=122) or (65<=ord(s[i])<=90):  #完成数据的筛选
                if(65<=ord(s[i])<=90):
                    list_str.append(chr(ord(s[i])+32))
                else:
                    list_str.append(s[i])       
        return operator.eq(list_str,list_str[::-1]) #利用eq函数进行比较

    运行结果:
    在这里插入图片描述

    关于其中一些知识的链接:
    ASCII码与字符相互转化
    Python如何判断两个列表相等


    思路二:当然我们可以巧用python中的函数来解决此题,如果不是很了解这些函数的朋友可以在下方的知识链接中自行查阅,具体思路也与我给出的方法顺序一致。具体代码如下:

'''python 3版本下方可运行'''
class Solution:
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        s = ''.join(filter(str.isalnum,s)).lower()
        return s==s[::-1]

    运行结果:
    在这里插入图片描述

    关于其中一些知识的链接:

    Python isalnum方法
    Python filter函数
    Python join方法
    Python lower方法


    分享就到这里了,欢迎大家一起交流讨论。


    注明

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii

发布了32 篇原创文章 · 获赞 62 · 访问量 1299

猜你喜欢

转载自blog.csdn.net/Mingw_/article/details/104786218