力扣初级算法刷题记录--验证回文串

回文串:

      回文串的特点是中心对称

      回文串有两种情况:1.奇数类:   如 "aba"

                                       2.偶数类:如" abba"

思路:

        使用双指针法,用left,right分别从字符串的首和尾两侧逼近,检测 left,right 指向的字符是否一致。(while循环结构实现)。细节注意怎么去处理空字符串和字符的大小写,怎么筛选出含数字字母的字符。

代码:

 class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        char_list=[]
        if len(s)==0:
            return True
        for char in s:
            #必须是数字字母字符
            if char.isalnum():
            #必须进行大小写的转换,并连接成字符串
               char_list.append(char.lower())
        new_str="".join(char_list)
        left,right=0,len(new_str)-1
        while left<right:
            if new_str[left]!=new_str[right]:
                return False
            left+=1
            right-=1
        return True

  Python isalnum()方法 | 菜鸟教程 (runoob.com)

注意:

1.题目要求大写字符转换成小写字符.

Python lower()方法 | 菜鸟教程 (runoob.com)

lower()方法

s="SASSYBOX"
str=s.lower()
print(str)

输出结果:可见大写转化为小写

 char.lower()

代码中使用当前遍历到的char字符调用lower()方法,会得到一个小写的字符

2.join()方法 

Python join()方法 | 菜鸟教程 (runoob.com)

join()方法 能够把一个可迭代对象(列表,元组,字典,集合 ,字符串)的元素使用某个字符

将其连接成字符串

 当遍历到的字符转化为小写字符后,应该使用join()方法将其连接成字符串

我最初的写法是错误的,join()方法接受的是可迭代对象,单个字符不是可迭代对象,因此执行不通过

错误代码如下:

for char in s:
            #必须是数字字母字符
            if char.isalnum():
            #必须进行大小写的转换,并连接成字符串
               new_str= " ".join(char.lower())

   join()方法要求传入的是一个可迭代对象,因此可以采用创建一个储存字符的列表,再利用join()方法处理,将列表中的字符拼接成字符串

3. 移除所有非字母数字字符。

    Python isalnum()方法 | 菜鸟教程 (runoob.com)

  isalnum()方法  用于检测字符串是否由数字和字母组成,如果字符串至少有一个字符且所有字符都是数字或字母则返回True,否则返回False,可通过直接用字符调用该方法作为if语句的判断条件,过滤掉非字母数字的字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值