[NeetCode 150] Is Palindrome

Is Palindrome

Given a string s, return true if it is a palindrome, otherwise return false.

A palindrome is a string that reads the same forward and backward. It is also case-insensitive and ignores all non-alphanumeric characters.

Example 1:

Input: s = "Was it a car or a cat I saw?"

Output: true

Explanation: After considering only alphanumerical characters we have “wasitacaroracatisaw”, which is a palindrome.

Example 2:

Input: s = "tab a cat"

Output: false

Explanation: “tabacat” is not a palindrome.

Constraints:

1 <= s.length <= 1000

s is made up of only printable ASCII characters.

Solution

Easy problem! First, we need to filter all non-alphanumeric characters out. Then just check if this string is a palindrome one character by one character.

Oh, because palindrome is case-insensitive, we can convert the string into lower case at very first.

Code

To appear like an expert, we can use regular expression to find all alpha and numeric characters.

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()
        alphanumeric_string = ''.join(re.findall(r'[a-z0-9]+', s))
        for i in range(len(alphanumeric_string)//2):
            if alphanumeric_string[i] != alphanumeric_string[-1-i]:
                return False
        return True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值