【前言】坚持日更LeetCode刷题系列
不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!
【题目】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