验证回文字符串 Ⅱ并打印回文字符串

题目描述

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。不能,打印"false",能,打印出回文字符串。

function isPali(str, l, r) { // 辅助函数
    while (l < r) {            // 指针相遇 结束循环
      if (str[l] !== str[r]) { // 一票否决
        return false;
      }
      l++;                     // 指针挪动,相互逼近
      r--;
    }
    return true;               // 没有遇到不同,返回true
  }
  
function fun(str){
    let l = 0, r = str.length - 1; // 头尾指针
  while (l < r) { 
    if (str[l] !== str[r]) {     // 转为判断删掉字符后的字串,是否是回文串
      return isPali(str, l + 1, r) || isPali(str, l, r - 1);
    }
    l++;
    r--;
  }
  return true;
}

function prin(str){
    var flag=fun(str);
    if(flag==false){
        return 'false';
    }
    var len=str.length;
    var res='';
    for(let [i,j]=[0,len-1];i<j;i++,j--){
        if(str[i]!==str[j]&&str[i]===str[j-1]&&j>=i+2){
           return res=str.substring(0,i+2)+str.substring(j+1)
        }
        if(str[i]!==str[j]&&str[i+1]==str[j]&&j>=i+2){
            return res=str.substring(0,i)+str.substring(j-1)
        }
        if(str[i]!==str[j]){
            return res=str.substring(0,i)+str.substring(i+1)
            
        }
        
    }
    return str;
}
console.log(prin('abbdfgda'))  //false
console.log(prin('abda'))    //ada

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值