# 判断支付串是否对称
// 思路: 把字符串翻转过来,看是否是相等
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
}
}