打怪升级之旅第10天【leetcode】LCR 019. 验证回文串 II

123 阅读1分钟

每天进步一点点

题目描述

给定一个非空字符串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
}

image.png baybay!