处理回文数
题目-处理回文数
给定非空字符串 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
应该还有更好的解法,我还没想出来。