剑指offer20220117

剑指 Offer II 018. 有效的回文

题目描述:

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

本题中,将空字符串定义为有效的 回文串 

public class Solution {
    public bool IsPalindrome(string s) {
        int left = 0 , right = s.Length-1;
        s = s.ToLower();
        while(left<right){
            if (!(s[left]<='z'&&s[left]>='a')){
                left++;
            }
            else if (!(s[right]<='z'&&s[right]>='a')){
                right--;
            }
            else {
                if (s[left] != s[right]) {
                    return false;
                }
                left++;
                right--;
            }
    }
    return true;
}
}

救命,这个代码总是有几个不通过,我实在是不理解,我不知道到底是哪里不对?

现在卡在了“OP”这个字符串上,一直输出是true,但是实在是找不到问题,万能的大佬们帮我看看到底问题出在哪里呀???????满脑袋的问号

== == == == ===========================================================

好了,经过两个小时的挣扎,终于找到了问题,原来题目是只考虑字母和数字。。。和数字。。。和数字(眼睛没用要么把角膜捐了吧,服了我自己了。。。。)

最后的代码是:

public class Solution {
    public bool IsPalindrome(string s) {
        int left = 0 , right = s.Length-1;
        s = s.ToLower();
        while(left<right){
            if (!((s[left]<='z'&&s[left]>='a')||(s[left]<='9'&&s[left]>='0'))){
                left++;
            }
            else if (!((s[right]<='z'&&s[right]>='a')||(s[right]<='9'&&s[right]>='0'))){
                right--;
            }
            else {
                if (s[left] != s[right]) {
                    return false;
                }
                left++;
                right--;
            }
    }
    return true;
}
}

只是加了一个条件,它就好使了。。。。。。早知如此,应该早早看题 

这里提醒所有朋友:

做题千万条,看题千万条

看题不仔细,做题一行又一行泪。。。

最后结果:

 没想到时间效率这么厉害,所以我之前是为什么不好好看题,浪费生命,浪费头发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值