leetcode 125. 验证回文串(java版)

本文介绍了一种用于判断字符串是否为回文的有效算法。该算法通过双指针技术逐个比较字符,并排除非字母数字字符,实现了高效准确的判断过程。文章详细解释了算法的实现细节,包括字符有效性检查、大小写忽略等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 private static boolean isPalindrome(String s) {
        if(null==s||s.length()<2){//如果字符串的长度小于2,直接返回true
            return true;
        }
        int size=s.length()-1;//记载的总长度
        char left,right;//左右指针指向的字符
        for(int i=0;i<s.length()-1;i++){//此处不使用size是因为size作为变量需要在下面进行实时修改
            if(!isvalid(s.charAt(i))){//判断是否为需要判断的字符
                continue;
            }
            left=s.charAt(i);
            while(size>=0&&!isvalid(s.charAt(size))){//右角标大于0并且字符无效时,右指针左移
                size--;
            }
            right=s.charAt(size);
            if(!issame(left,right)){//判断左右角标对应的字符是否相等
                return false;
            }
            size--;
        }
        return true;
    }

    private static boolean issame(char left, char right) {
        if(left<65||right<65){//判断字符是否小于65
            if(left==right){//小于65代表字符为数字,直接判断是否相等就可以了
                return true;
            }
        }else{
            if(left==right||Math.abs(left-right)==32){//字符大于等于65代表此处是字母,差值为32代表字母相等,一个是大写一个是小写
                return true;
            }
        }
        return false;
    }

    private static boolean isvalid(char c) {
        if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='0'&&c<='9'){
            return true;
        }
        return false;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值