力扣(leetcode) 125. 验证回文串

题目在这:https://leetcode-cn.com/problems/valid-palindrome/

思路分析:

题目说 回文字符串忽略大小写,忽略各种符号和空格,只看字母和数字。

法一:
完整代码:

	st = st.lower() # 转换成小写
    st = re.sub('[^a-z0-9]*',' ',st) #  只要字母和数字。去掉其他字符
    st = st.split()  
    st = "".join(st)  # 除掉空格
    i = 0
    j = -1
    temp =2
    if len(st) == 1 or len(st) == 0:  # 空字符和只有一个字符时必回文
        return True
    while True:
        if st[i] != st[j]: # i指向开头  j指向末尾,两个不断往中间移动
            return False
        if temp == len(st) or temp == len(st) +1:
            return True
        temp += 2
        i += 1
        j -= 1

上面的代码手动实现一下就懂了,很好懂,干看可能不容易理解、

法二:

使用库函数 isalnum() 。
该函数会判断所给字符串,若为数字或字母则返回True。

完整代码

	ret = []
    for i in s:
        if i.isalnum():
            ret.append(i.lower())
    return ret == ret[::-1]

你可能感兴趣的:(交流学习,个人笔记,leetcode,python)