【LeetCode 0125】【双指针】有效回文

https://leetcode.com/problems/valid-palindrome/

题解
  • 双指针:左指针右移过程时跳过非法字符,右指针左移时跳过非法字符。 如果左指针大于等于右指针,表示有效回文;如果两指针所对应的字符如果不等,则不是有效回文。
javascript 复制代码
var isPalindrome = function(s) {
    
    const isAlphaOrNumeric = (c)=> (c >= 'a' && c <='z') || (c >= '0' && c<='9');
    s = s.toLowerCase();
    let [left,right] = [0,s.length-1]
    while( left < right ) {
		// 跳过非法字符
        while(left < right && !isAlphaOrNumeric(s[left]))left ++
        while(right > left && !isAlphaOrNumeric(s[right]) )right --		// 如果左指针等于右指针,表示有效回文
        if( left == right ) {
            return true
        }
        // 如果左指针对应字符 不等于 右指针对应字符,表示无效回文
        if(s[left] != s[right]){
            return false
        }
        left ++;
        right --;
    }
    return true
};
相关推荐
不染尘.1 分钟前
最短路径之Bellman-Ford算法
开发语言·数据结构·c++·算法·图论
big_rabbit05024 分钟前
JVM堆内存查看命令
java·linux·算法
m0_662577976 分钟前
C++中的RAII技术深入
开发语言·c++·算法
旖-旎6 分钟前
二分查找(点名)(8)
c++·算法·二分查找·力扣
承渊政道9 分钟前
【优选算法】(实战体验滑动窗口的奇妙之旅)
c语言·c++·笔记·学习·算法·leetcode·visual studio
lemonth11 分钟前
图形推理----
人工智能·算法·机器学习
2401_8914821722 分钟前
C++代码复杂性分析
开发语言·c++·算法
keep intensify23 分钟前
单词搜索-
算法·深度优先
zx_zx_12323 分钟前
定长滑动窗口和不定长滑动窗口
数据结构·算法
mjhcsp30 分钟前
C++ 梯度下降法(Gradient Descent):数值优化的核心迭代算法
开发语言·c++·算法