125 给定一个字符串,只考虑字母和数字,验证它是否是回文串

【题目】

125 给定一个字符串,只考虑字母和数字,验证它是否是回文串_第1张图片
在这里插入图片描述

【分析】

首尾双指针。

【代码】

class Solution {
    public boolean isPalindrome(String s) {
        if(s==null || s.length()<=1) return true;
        int i=0,j=s.length()-1;

        while(i<j){
            while(i<j && !isVoNum(s.charAt(i))){  //从左往右找到下一个字母数字
                i++;
            }
            while(i<j && !isVoNum(s.charAt(j))){  //从右往左找到下一个字母数字
                j--;
            }
            if( changeUp(s.charAt(i))!=changeUp(s.charAt(j))){ //比较
                return false;
            }
            i++;j--;
        }
        return true;
    }

    public boolean isVoNum(char c){
        return c>='0' && c<='9' || c>='a' && c<='z' || c>='A' && c<='Z';
    }
    public char changeUp(char c){  //小写字母变成大写
        if(c>='a' && c<='z'){
            c-=32;
        }
        return c;
    }
}

结果:
在这里插入图片描述

你可能感兴趣的:(算法刷题班题目详解)