处理回文数

题目-处理回文数

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

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

知识共享署名4.0国际许可协议,转载请保留出处; 部分内容来自网络,若有侵权请联系我:前端学堂 » 处理回文数

赞 (3) 打赏

评论 0

如果对您有帮助,别忘了打赏一下宝宝哦!

支付宝扫一扫打赏

微信扫一扫打赏