写点什么

LeetCode 题解:125. 验证回文串,双指针,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2021 年 03 月 10 日
LeetCode题解:125. 验证回文串,双指针,JavaScript,详细注释

解题思路:125. 验证回文串


解题思路:


  1. 回文串的含义是:一个字符串,翻转后仍然等于其本身。

  2. 如果用两个指针,从两端向中间推进,它们对应的字符如果始终相等,那么就是回文串。

  3. 如果指针移动时,遇到非法字符,则需要跳过。


/** * @param {string} s * @return {boolean} */var isPalindrome = function(s) {  // 使用两个指针,分别从首尾向中间推进  let i = 0;  let j = s.length - 1;
// 不断对比每个合法字符,直到两个指针相遇 while (i < j) { // 如果两个指针遇到非法字符,则跳过 // 为避免指针移动出现i >= j的情况,增加判断 while (!check(s[i]) && i < j) { i++; } while (!check(s[j]) && i < j) { j--; }
// 如果发现两个字符不相等,则s不是回文串,返回false即可 // 无论判断结果如何,都将指针向中间移动一位 if (s[i++].toLowerCase() !== s[j--].toLowerCase()) { return false; } }
// 能够退出循环,表示没有发现不相等的字符,s是回文串 return true;};
// 判断字符是否合法const check = (char) => { if ( (char >= '0' && char <= '9') || (char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') ) { return true; }
return false;};
复制代码


发布于: 2021 年 03 月 10 日阅读数: 7
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:125. 验证回文串,双指针,JavaScript,详细注释