Comments (2)
解题思路:
- 正则表达式去除非数字和字母
- 长度小于2时return true
- 长度大于等于2时,指定left right前后两个指针,当left<right时,
循环,如果在任意地点s[left] !== s[right], return false。否则
left++, right--,继续执行循环 - 当循环结束还没有return false ,则return true
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
const formatStr = s.toLowerCase().replace(/[\W_]/g, "");
if (s.length < 2) {
return true;
}
let left = 0;
let right = formatStr.length - 1;
while (left <= right) {
if (formatStr[left] !== formatStr[right]) {
return false;
}
left++;
right--;
}
return true;
};
from like-algorithms.
不知道是不是我的理解有误,该题目只考虑字母和数字字符,但是验证时会有下划线,所以在正则替换上加入下换线替换
解法一
栈
思路:
- 将输入的字符串中的其它字符替换掉
- 如果长度比2个小直接返回 true
- 字符逆序入栈
- 对比输入字符格式化后的与栈转字符
var isPalindrome = function (s) {
const str = s.replace(/[\W_]/g, '').toLocaleLowerCase();
const stack = [];
for (let i = str.length - 1; i >= 0; i--) {
stack.push(str[i]);
}
return stack.join('') === str;
}
解法二
双指针
思路
- 将输入的字符串中的其它字符替换掉
- 如果长度比2个小直接返回 true
- 创建左右指针,遍历对比左右字符是否一致,不一致则返回 false
- 当 left > right 说明遍历结束,左右字符都相等,返回 true
var isPalindrome = function (s) {
const str = s.replace(/[\W_]/g, '');
if (str.length < 2) return true;
let left = 0;
let right = str.length - 1;
while (left <= right) {
if (str[left].toLocaleLowerCase() !== str[right].toLocaleLowerCase()) return false;
left++;
right--;
}
return true;
}
from like-algorithms.
Related Issues (20)
- ✅1480. 一维数组的动态和 HOT 1
- ✅406. 根据身高重建队列 HOT 1
- ✅1030. 距离顺序排列矩阵单元格 HOT 1
- ✅134. 加油站 HOT 1
- ✅3. 无重复字符的最长子串 HOT 1
- ✅6. Z 字形变换 HOT 1
- ✅452. 用最少数量的箭引爆气球 HOT 1
- ✅剑指 Offer 58 - II. 左旋转字符串 HOT 1
- ✅1370. 上升下降字符串 HOT 1
- ✅164. 最大间距 HOT 1
- ✅454. 四数相加 II HOT 1
- ✅976. 三角形的最大周长 HOT 1
- ✅767. 重构字符串 HOT 1
- ✅34. 在排序数组中查找元素的第一个和最后一个位置 HOT 2
- 📌321. 拼接最大数
- ✅659. 分割数组为连续子序列 HOT 1
- ✅78. 子集 HOT 2
- ✅860. 柠檬水找零 HOT 1
- ✅90. 子集 II HOT 1
- 46. 全排列
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from like-algorithms.