首页 > 试题广场 >

添加最少的字符让字符串变为回文字符串(1)

[编程题]添加最少的字符让字符串变为回文字符串(1)
  • 热度指数:1861 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个字符串str,如果可以在str的任意位置添加字符,请返回在添加字符最少的情况下,让str整体都是回文字符串的一种结果。

输入描述:
输入包含一行字符串,代表str


输出描述:
输出一行,代表返回的字符串。
示例1

输入

ABA

输出

ABA
示例2

输入

AB

输出

ABA

备注:
时间复杂度,空间复杂度
// 一直提示时间复杂度或循环有误,但是在本地自测毫无问题。。求教
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)
}

发表于 2022-10-21 15:32:05 回复(0)

问题信息

上传者:小小
难度:
1条回答 6947浏览

热门推荐

通过挑战的用户

查看代码