LeetCode(力扣):验证回文串

java 复制代码
class Solution {
    public boolean isPalindrome(String s) {
        //定义开头结尾指针
        int left = 0;
        int right = s.length() -1;
        //只要两指针没相遇就继续
        while(left < right){
            //遇到空格和标点符号直接跳过
            //这里需要额外再加left < right条件,防止全是标点符号导致越界
            while(left < right && !Character.isLetterOrDigit(s.charAt(left))){
                left++;
            }
            while(left <right && !Character.isLetterOrDigit(s.charAt(right))){
                right--;
            }
            //统一将大写转换成小写
            if(Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}

Character.isLetterOrDigit(char ch):

判断字符是否为字母或数字

Character.toLowerCase(char ch):

大写变小写,已经是小写或者数字的原样返回

相关推荐
飞Link2 小时前
概率图模型的基石:隐马可夫模型 (HMM) 深度解析
开发语言·python·算法
Eward-an2 小时前
LeetCode 128. 最长连续序列(O(n)时间复杂度详解)
数据结构·算法·leetcode
Frostnova丶2 小时前
LeetCode 1009 & 476 数字的补数
算法·leetcode
CppBlock2 小时前
HPX vs TBB vs OpenMP:并行任务模型对比
c++·算法
17(无规则自律)2 小时前
Leetcode第六题:用 C++ 解决三数之和
c++·算法·leetcode
进击的小头2 小时前
第4篇:二阶系统的时域响应分析
python·算法
tankeven2 小时前
HJ126 小红的正整数计数
c++·算法
0 0 02 小时前
CCF-CSP 37-2 机器人饲养指南(apple)【C++】考点:完全背包问题
开发语言·c++·算法