38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
/**
|
|
* @param {string} s
|
|
* @return {boolean}
|
|
*/
|
|
export const validPalindrome = function (s, flag = true) {
|
|
let l = 0; let r = s.length - 1
|
|
while (l < r && s[l] === s[r]) {
|
|
l++; r--
|
|
}
|
|
if (l >= r) return true // 说明是回文
|
|
if (flag) return validPalindrome(s.slice(l, r), false) || validPalindrome(s.slice(l + 1, r + 1), false) // 如果不是回文,切左边或者右边,再判断一次
|
|
return false
|
|
}
|
|
|
|
// 暴力解法,会超时
|
|
// /**
|
|
// * @param {string} s
|
|
// * @return {boolean}
|
|
// */
|
|
// export const validPalindrome = function (s) {
|
|
// const len = s.length
|
|
// const tmpLen = len - 1
|
|
// let mid = len >> 1
|
|
// if (s.substring(0, mid) === s.substring(len % 2 ? mid + 1 : mid, len).split('').reverse().join('')) {
|
|
// return true
|
|
// }
|
|
|
|
// mid = tmpLen >> 1
|
|
// for (let n = 0; n < len; n++) {
|
|
// const tmp = s.substring(0, n) + s.substring(n + 1, len)
|
|
// if (tmp.substring(0, mid) === tmp.substring(tmpLen % 2 ? mid + 1 : mid, tmpLen).split('').reverse().join('')) {
|
|
// return true
|
|
// }
|
|
// }
|
|
|
|
// return false
|
|
// }
|