125. 验证回文串(java)

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

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

代码一:java


class Solution {
     public 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;
    }
 
    public 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;
    }
 
    public static boolean isvalid(char c) {
        if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='0'&&c<='9'){
            return true;
        }
        return false;
    }
}

代码二:java

class Solution {
    public boolean isPalindrome(String s) {
        char[] cha = s.toCharArray();//将字符串对象中的字符转换为一个字符数组
        int i = 0, j = cha.length - 1;
        while(i < j){
            if(!Character.isLetterOrDigit(cha[i]))
                i++;
            else if(!Character.isLetterOrDigit(cha[j]))
                j--;
            else
                if(Character.toLowerCase(cha[i]) == Character.toLowerCase(cha[j])){
                    i++;
                    j--;
                }else{
                    return false;
                }
        }
        return true;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_40449300/article/details/84503927