# 判断支付串是否对称

// 思路: 把字符串翻转过来,看是否是相等
const str = "abccba"
const reverStr = str.split('').reverse().join('')
if(str === reverStr){
  return '对称'
}

# 删除任意一个字符串后,判断是否回文(对称)

TIP

示例 1: 输入: "aba"
输出: True
示例 2:
输入: "abca"
输出: True
解释: 你可以删除c字符。
注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。

方法一: 利用 循环判断

function strs(s) {
  if (isCan(s)) return true
  let mys = ""
  for (let i = 0; i < s.length; i++) {
    mys = [...s.split('')];
    mys.splice(i, 1);
    if (isCan(mys.join(''))) {
      return true
    }
  }
  function isCan(s) {
    return s === s.split('').reverse().join('')
  }
  return false
}

方法二: 利用 双指针对称性

function strs(s) {
  const len = s.length;
  let i = 0, j = len - 1
  while (i < j && s[i] === s[j]) {
    i++;
    j--;
  }

  if (isCan(i + 1, j)) {
    return true
  }
  if (isCan(i, j - 1)) {
    return true
  }

  function isCan(st, ed) {
    while (st < ed) {
      if (s[st] !== s[ed]) {
        return false
      }
      st++;
      ed--
    }
    return true
  }
}