LeetCode: Valid Palindrome [125]

LeetCode: Valid Palindrome [125]

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

LeetCode: Valid Palindrome [125]此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

【题目】

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;
    }
};

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 多少行代码可以申请软件著作权_python申请软件著作权

    多少行代码可以申请软件著作权_python申请软件著作权在申请软件专利或著作权时,如何快速统计源码行数。其实我们可以利用vs2010的文件搜索功能结合正则表达式,来遍历所有文件得出总行数.

  • DHCP_RELAY(Option60与Option82)[通俗易懂]

    DHCP_RELAY(Option60与Option82)[通俗易懂]DHCP_RELAY(Option60与Option82):http://wenku.baidu.com/view/2bac6d758e9951e79b8927e7.htmlDHCPOption82:DHCPRelayAgentInformationOption.提供DHCP的认证和安全机制。CID:AgentCircuitID RID:Agen

    2022年10月15日
  • 教你两分钟做出一个精美好用的404页面

    教你两分钟做出一个精美好用的404页面怎么快速的做好网站404跳转页面?要想做的又快又好,开源字节建议就套用精美的模板即可。总的来说就是利用404页面模板,进行修改,修改好一个404页面上传到网站根目录,然后一般在网站空间的后台直接设置选择用此文件作为404页面即可。具体利用404模板修改制作404页面流程如下:第一步获取404代码文件,下载一套404页面模板(一般一个404代码文件,和一张404图片)第二步修改文件信息,把404页面代码文件里面的链接文字等修改成适用自己的网站的信息。域名,关键字,404图片调用路径

  • WeakHashMap的原理

    WeakHashMap的原理简介WeakHashMap和HashMap一样,WeakHashMap也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以为null。不过WeakHashMap的键是“弱键”(注:源码中Entry中的定义是这样的:privatestaticclassEntry&lt;K,V&gt;extendsWeakReference implementsMap.Ent…

  • 《Android应用开发揭秘》连载3

    《Android应用开发揭秘》连载3《Android应用开发揭秘》  书名:Android应用开发揭秘作者:杨丰盛出版社:机械工业出版社ISBN:9787111291954出版日期:2010年3月(1版2次)开本:16页码:515版次:1-2定价:69元豆瓣网讨论地址:http://www.douban.com/subject/4200822/China-pub预订地址:http://www.china-pub.

发表回复

您的电子邮箱地址不会被公开。

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