前端算法——回文字符串(牛客一直无法通过。。但是我觉得没毛病)

  • 给定一个字符串str,如果可以在str的任意位置添加字符,请返回在添加字符最少的情况下,让str整体都是回文字符串的一种结果。
var arr=readline().split('');
var len=arr.length;
var max=5000;
var mystr='';

for(var i=len-1;i>=0;i--){
    // 注意 字符串为单个字符时
    if(len==1){
        print(arr[0]);
        break;
    }else{
        // 中心点时空格/元素
        mymax(arr.slice(0,i),arr.slice(i+1),arr[i])
        mymax(arr.slice(0,i),arr.slice(i),[])
    }
}
function mymax(left,right,mid){
    var j=0;
    while(true){
        if(left[left.length-1-j]!=right[j]){
            if(left.length<=right.length){
                left.splice(left.length-j,0,right[j])
            }else{
                right.splice(j,0,left[left.length-1-j])
            }
        }
        if((left.length==right.length)&&j==right.length-1&&left[0]==right[j]){
            break;
        }
        j++;
    }
    var lmax=left.concat(mid).concat(right);
    if(lmax.length<max){
        max=lmax.length;
        mystr=lmax.join('')
    }
}
if(len!=1){
    print(mystr)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值