leetcode--125--验证回文串

题目描述:

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

说明:本题中,我们将空字符串定义为有效的回文串。("回文串"是一个正读和反读都一样的字符串)

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

解题思路1:

  1. 去除字符串中的标点符号
  2. 去除字符串中的空格
  3. 根据回文串的定义,依次比较两边字符是否一致

代码1:

import string
class Solution(object):
    def isPalindrome(self, s):

        s = ''.join(c for c in s if c not in string.punctuation)  # 去除标点符号
        if len(s) <= 1:  # ""、" " 、"."、 "a."均为true
            return True
        s = s.lower().replace(' ', '')  # 小写变大写以及去除空格
        number = 0
        for i in range(len(s)//2):
            if s[i] == s[len(s)-i-1]:
                number += 1
                if number == len(s)//2:
                    return True
        return False

s = Solution()
str = "A man, a plan, a canal: Panama"
print(s.isPalindrome(str))

解题思路2:

来自: minningl

  1. 首先将字符串s转换为小写,然后定义一个列表,其中只保存字母和数字。
  2. 判断 反转后的列表是否和原列表相等

代码2:

class Solution(object):
    def isPalindrome(self, s):
        s = s.lower()
        ls = []
        for item in s:
            if item.isdigit() or item.isalpha():
                ls.append(item)
        return ls == ls[::-1]

题目来源:
https://leetcode-cn.com/problems/valid-palindrome/

发布了378 篇原创文章 · 获赞 43 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览