一道前端面试题:验证回文子串

function fn(char){

    const valid = (s) => { // 定义一个验证方法判断是否是a-z或者0-9之间的字符

      return (s >= 'a' && s<= 'z') || (s >= '0' && s <= '9')

    }

    let i = 0, j = char.length - 1;

    while(j >= i){

      const left = char[i].toLowerCase()

      const right = char[j].toLowerCase()

      if(!valid(left)){ // 从左到右,把验证不通过的字符跳过

        i++

      } else if(!valid(right)){ // 从右到左,把验证不通过的字符跳过

        j--

      } else if(left === right){

        i++,  

        j--

      } else { // 到这里还不通过那就不是回文子串了,直接返回false

        return false

      }

    } // 到这里就代表是回文子串,毕竟不是的话就被return出去了

    return true

  }

  console.log(fn('A man, a plan, a canal; Panama'))

  console.log(fn('gadsjljkihl; sadg,,l'))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值