每天进步一点点
题目描述
给定一个非空字符串s,最多删除一个字符,判断是否能成为回文字符串
示例 1: 输入: "aba"
输出: True
示例 2:
输入: "abca"
输出: True
解释: 你可以删除c字符。
注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。
思路分析
回文 对称性
/**
*
* @param {string} s
* 时间复杂度: O(n)
* 空间复杂度: O(1)
*/
function validPalindrome(s){
let len = s.length
let l = 0
let r = len -1
while(r > l && s[l] === s[r]){
l++
r--
}
if(isPalindrome(i+1,j)){
return true
}
if(isPalindrome(i,j-1)){
return true
}
function isPalindrome(st,ed){
while(ed > st){
if(s[st] !== s[ed]){
return false
}
st++
ed--
}
// 原因 是遍历完了
return true
}
return false
}
baybay!