前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【leetcode刷题】T70-验证回文串

【leetcode刷题】T70-验证回文串

作者头像
木又AI帮
修改2019-07-18 10:15:02
3320
修改2019-07-18 10:15:02
举报
文章被收录于专栏:木又AI帮

【题目】

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

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

代码语言:javascript
复制
输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

代码语言:javascript
复制
输入: "race a car"
输出: false

【思路】

使用两个下标i和j,只要其指向的不是数字或者字母,则对应的i自增(或者j自减)。

注意:题目中大写字母和对应的小写字母也认为一样,即A和a是一样的,因此,我们可以先将大写字母转换为小写字母。

Tip:当然可以使用正则表达式,先提取字符串中的数字和字母。

【代码】

python版本

直接判断

代码语言:javascript
复制
class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        i = 
        j = len(s) - 
        flag = True
        while i < j:
            si = s[i].lower()
            sj = s[j].lower()
            # 去除空格
            if (si < '0' or si > '9') and (si < 'a' or si > 'z'):
                i += 
                continue
            if (sj < '0' or sj > '9') and (sj < 'a' or sj > 'z'):
                j -= 
                continue
            # 是否相同
            if si != sj:
                # print(s[i].lower(), s[j].lower())
                flag = False
                break
            i += 
            j -= 
        return flag

使用正则表达式

代码语言:javascript
复制
class Solution(object):
    def isPalindrome(self, s):
        s = re.sub(r'\W+', '', s).lower()
        return s == s[::-1]

C++版本

代码语言:javascript
复制
class Solution {
public:
    bool isPalindrome(string s) {
        int i=, j=s.size()-1;
        bool flag=true;
        while(i < j){
            char si = s[i];
            char sj = s[j];
            // 去掉空格、符号等
            if('A' <= si && si <= 'Z')
                si += ;
            else{
                if((si < '0' || si > '9') && (si < 'a' || si > 'z')){
                    i++;
                    continue;
                }
            }
            if('A' <= sj && sj <= 'Z')
                sj += ;
            else{
                if((sj < '0' || sj > '9') && (sj < 'a' || sj > 'z')){
                    j--;
                    continue;
                }
            }
            // 判断是否相等
            if(si != sj){
                flag = false;
                break;
            }
            i++;
            j--;
        }
        return flag;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档