// 判断字符串是否为回文
function isRerse(str) {
const len = str.length;
for(var i = 0; i < len / 2; i ++) {
if (str[i] !== str[len - i - 1]) {
return false;
}
return true;
}
}
// console.log(isRerse('abba'));
// console.log(isRerse('fhfhfhfhfhfsxc'));
// 扭转字符串 也可以用这个api直接判断字符串是否为回文字符串
const a = 'juejin';
a.split('').reverse().join('')
// console.log(a)
// console.log(a.split('').reverse().join(''))
// 给定一个非空字符串s,最多删除一个字符,判断是否能成为回文字符串;
// 例如 'agbba' 删掉g 就能成为回文
// 思路: 双指针法,指向字符串头部,跟尾部 2个位置;对比是否相等
// 如果相等,那么指针向内部继续前进,再比较;
// 如果不相等,那么考虑“删掉左边,左指针向右移一位” 然后再对新区间判断是否为回文,如果成功,那删掉左边;
// 如果不成功,那么考虑“删掉右边,右指针向左移一位” 同样判断;
// 左右都判断完 都不能成为回文; 那得到结果:删掉一个字符 并不能成为回文字符串
const validPalindrome = (str) => {
const len = str.length;
// 初始化左右2个指针
let l = 0;
let r = len -1;
while (l < r && str[l] === str[r]) {
l ++;
r --;
}
if (isPalindrome(l + 1, r)) {
return true;
}
if (isPalindrome(l, r - 1)) {
return true;
}
return false;
function isPalindrome(lt, rt) {
while(lt < rt) {
if (str[lt] !== str[rt]) {
return false;
}
lt ++;
rt --;
}
return true;
}
};
console.log(validPalindrome('aasubb'))
console.log(validPalindrome('ansdna'))
console.log(validPalindrome('abba'));
console.log(validPalindrome('abjjfvtdjba'));
console