【LeetCode】125. Valid Palindrome

本文详细阐述了如何通过编程逻辑判断一个字符串是否为回文字符串,仅考虑字母数字字符并忽略大小写。包括核心算法解释、关键代码逻辑及具体实例演示。

Valid Palindrome

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.

 

左右分别往中间扫描,如果不同则返回false,如果两端碰面了则返回true

 

代码里写了很多注释,我认为这类题难点在于循环的判断条件以及跳出条件

因此对于每一个循环都需要明确它的进入条件以及跳出条件。

class Solution {
public:
    bool alphanumeric(char c)
    {
        if((c >= 'a' && c <= 'z') ||
           (c >= 'A' && c <= 'Z') ||
           (c >= '0' && c <= '9'))
            return true;
        else
            return false;
    }
    bool isPalindrome(string s) {
        if(s == "")
            return true;
        int i = 0;
        int j = s.size()-1;
        while(i < j)
        {
            while(!alphanumeric(s[i]))
                i ++;
            while(!alphanumeric(s[j]))
                j --;
            if(i < j && tolower(s[i]) != tolower(s[j]))
                return false;
            i ++;
            j --;
        }
        return true;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值