【发布时间】:2019-11-20 18:37:46
【问题描述】:
这是来自 LeetCode - 有效回文。
给定一个字符串,判断它是否是回文,只考虑字母数字字符并忽略大小写。
注意:为了解决这个问题,我们将空字符串定义为有效回文。
while (regex.test(s[start])) { 开始++;} --> 看不懂是怎么回事,我只知道 s[start] 是字母数字字符,会是假的
如果 (!s[开始] || !s[结束]) --> 这是什么意思?
下面是整个代码
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;
};
请指教!
【问题讨论】:
-
理解这段(或任何)代码的一个好方法是单步执行。既然你有代码,你可以把它弹出到调试器中并测试它。
-
这些语句上方的 cmets 准确地解释了它们的作用。
标签: javascript string palindrome