LeetCode笔记:验证回文串
问题
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
解法
思路:
- 先将非数字和字母的字符去除
- 循环这个新的字符串,判断从开始和结束位置移动相同距离后的字符串是否相同,全部相同则结果是为回文串,有任何一组字符串不同,则不是回文串
代码:
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function (s) {
// 只保留数字和字母
const str = s.replace(/[^0-9a-zA-Z]*/g, "").toLowerCase();
// 循环到一半位置即可
for (let i = 0; i < (str.length - 1) / 2; i++) {
// 对比前后同样位置的数值,有任何一对数值不同即不是回文数组
if (str[i] !== str[str.length - i - 1]) {
return false;
}
}
return true;
};
评论