- 最多删除一个,表示要是字符串本身也是回文字符串的话也是可以的,
- 字符串中只包含小写字母,就不用转换或者剔除不满足条件的,直接判断即可
- 判断回文字符串的话,用两个指针从两头枚举,如果遇到的字符不相等就判断从
[i + 1, j]
干掉s[i]
或者 干掉s[j]
判断[i, j - 1]
之间是不是回文字符串。
function check(s, l, r) {
while (l < r) {
if (s[l] == s[r]) {
l ++, r --;
} else {
return false;
}
}
return true;
}
var validPalindrome = function(s) {
let i = 0, j = s.length - 1;
while (i < j) {
if (s[i] == s[j]) {
i ++, j --;
} else {
if (check(s, i + 1, j) || check(s, i, j - 1)) {
return true;
} else {
return false;
}
// return check(s, i + 1, j) || check(s, i, j - 1);
}
}
return true;
};
进行代码优化,if (true) return true;
那么是不是可以直接返回最后的结果,答案是正确的。这样代码更加简洁但是不好理解