[英]Understanding solution of Valid Palindrome in Javascript
这是来自 LeetCode - 有效回文。
给定一个字符串,确定它是否是回文,只考虑字母数字字符并忽略大小写。
注意:为了解决这个问题,我们将空字符串定义为有效回文。
while (regex.test(s[start])) { start++;} --> 无法理解它是如何工作的,我只知道 s[start] 是字母数字字符,它将是错误的
if (?s[start] || !s[end]) --> 这是什么意思?
下面是整个代码
var isPalindrome = function(s) {
let regex = /[\W]/;
let start = 0;
let end = s.length - 1;
while (start < end) {
// Moves front runner to next alphanumeric
while (regex.test(s[start])) {
start++;
}
// Moves back runner to next alphanumeric
while (regex.test(s[end])) {
end--;
}
// Above would run until null if there are no alphanumeric characters so return true
if (!s[start] || !s[end]) {
return true;
}
// Check if equal and return false if not
if (s[start].toLowerCase() != s[end].toLowerCase()) {
return false;
}
// If index values match continue the while loop
start++;
end--;
}
return true;
};
请指教!
与之前的解决方案相同,加上:+ 删除空格和符号,除了 (AZ,az,0-9) + 小写
const isPalindrome = function(str) {
const expr = /[\W_]/g;
const lowcaseStr = str.toLowerCase().replace(expr, '');
const reverseStr = lowcaseStr.split('').reverse().join('');
return lowcaseStr === reverseStr
};
这是严重过度设计的。 为什么不只使用一个带有 2 个计数器的 for 循环,一个从 0 开始,一个在最后一个索引处,虽然它们不相等,但检查这些索引处的字符是否相同。 或使用内置函数,如
function palindrome(str){ return str.split('').reverse().join('') == str}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.