处理回文数

题目-处理回文数

给定非空字符串 s,您最多可以删除一个字符。判断是否可以成为回文。入参是一个字符串s,

该字符串仅包含小写字符 a-z,字符串的最大长度为 50000,返回删除的可能字符数组。

示例

Given s = “aba” return []

Given s = “abca” return [‘b’, ‘c’] // delete c or b

分析

首先要回判断回文数,就是字符串反过来跟原字符串相同。

然后怎么办呢?

Just Try

请你自动动手试一下:在线编程环境

想想有没有其他思路?

想想时间和空间复杂度,能否优化一下

真的做不到么?

let you think, think makes you happy!

参考答案

循环s字符串,尝试删除每个字母,然后判断余下的字符串是不是回文数:

function isUndulate(str){
  return str.split("").reverse().join("") == str
}
function algorithm(str){
  let carr = str.split(""), res=[];
  carr.forEach((k, i) => {
    carr[i]=""
    if(isUndulate(carr.join(""))){
      res.push(k)
    }
    carr[i]=k
  })
  return res
}
function main(param) {
  console.show("参数:" + param, "结果:" + JSON.stringify(algorithm(param)))
  testPerformance(algorithm, param)
}
main("abca");

请你自动动手试一下:在线编程环境

解法2

应该还有更好的解法,我还没想出来。



请遵守《互联网环境法规》文明发言,欢迎讨论问题
扫码反馈

扫一扫,反馈当前页面

咨询反馈
扫码关注
返回顶部