LeetCode: Valid Palindrome [125]

LeetCode: Valid Palindrome [125]

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

【题目】

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

【题意】

    给定一个字符串,仅仅关注英文字母和数字,忽略其它字符。问英文字母和数字按序排列后是否构成是回文


【思路】

    利用回文串推断的老办法就可以,两个指针p1, p2分别从头和尾中间扫描,推断对称位置的字符是否同样,仅仅只是须要跳过除英文字母和数字之外的其它字符。
    另外还须要注意处理2中特殊情况:(1)字符串为空串,(2)字符串不是空串,但里面没有英文字母或者数字。 这两种情况都判定为true
    

【代码】

class Solution {
public:
    bool isAlphanumeric(char c){
        if(isdigit(c))return true;
        if(c>='A'&&c<='Z'||c>='a'&&c<='z')return true;
        return false;
    }
    
    bool isEqual(char c, char b){
        if(isdigit(c))return c==b;
        if(c>='A'&&c<='Z')c='a'+(c-'A');
        if(b>='A'&&b<='Z')b='a'+(b-'A');
        return c==b;
    }

    bool isPalindrome(string s) {
        int len=s.length();
        if(len==0)return true;
        
        int front=0;
        int back=len-1;
        while(front<back){
            while(front<=back && !isAlphanumeric(s[front]))front++;
            while(front<=back && !isAlphanumeric(s[back]))back--;
            if(front<=back){
                if(!isEqual(s[front], s[back]))return false;
                front++;
                back--;
            }
        }
        return true;
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117906.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 图片图像转化视频[通俗易懂]

    python 图片图像转化视频

    2022年2月19日
    45
  • android应用程序_chrome Android

    android应用程序_chrome Android最近在看Android源码Setting代码的时候,发现其中配置都是用的PreferenceFragment,以前对这一块不是很了解,查资料看了一下,感觉用起来好方便。      PreferenceFragment的界面也是写在一个XML文件中,不过不是放在layout目录下,需要自己在res下面新建一个xml命名的文件夹,然后在该文件夹下再新建一个xml文件,这个文件就是我们Pref

    2022年9月7日
    0
  • X86安装PVE虚拟机

    准备工具:一个8G的U盘,键鼠 显示屏 HDMI转VGA的线 Win32DiskImager镜像写入工具 PVE的ISO镜像文件教程开始:一:进入pve的官网,下载镜像文件官网下载地址:https://www.proxmox.com/en/downloads选择ISOInstaller下载,这里以5.4.1版本为例二:下载Win32DiskImager镜像写入工…

    2022年4月4日
    99
  • es6数组处理方法整理

    es6数组处理方法整理数组常用.push().pop().unshift().shift().splice(i,n)删除,原数组被从i删除n个元素,返回被删掉的元素.slice(start,end)获取子数组,原数组不变,返回切出来的元素.concat().split()字符串变数组.sort()排序.reverse()翻转遍历处理.map(callback)遍历处…

    2022年5月24日
    35
  • eclipse导入maven工程

    eclipse导入maven工程eclipse导入maven工程

    2022年5月31日
    31
  • mybaties 错误[通俗易懂]

    mybaties 错误[通俗易懂]先看下错误org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound):com.sinofaith.idaplus.goodsitem.mapping.GoodslowInfoPOMapper.selectByPrimaryKeyatorg.apache.ibatis.bindin

    2025年6月1日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号