[算法]令人迷惑的前端面试题——回文

[算法]令人迷惑的前端面试题——回文

大厂在面试前端的时候往往会深挖一些数据结构、算法的问题
面试官会在背后问一系列的问题,来考察候选人的算法能力
于是我陆续的总结一些内容,以方便我下次换工作时候还可以来复习

回文

palindrome
回文的含义就是正读倒读内容是一样的,例如:上海自来水来自海上

技术难点

这种类型的题目通常考察的是 js 数组的相关方法
我们需要把字符串倒过来,可以通过把字符串拆分成数组、倒转,再恢复成字符串的方法实现

Array.split()
Array.reverse()
Array.join()

Array.split(separator, length)

  • separator 分割用的字符串或正则表达式,分割后返回数组,不包含 separator 本身,是 '' 时将会把每个字符都分开
    'name=mitkimi'.split('=') // ['name', 'mitkimi']
    
  • length 返回数组的最大长度

Array.reverse()

  • 该方法会把数组倒序,不会产生新数组

Array.join(separator)

  • separator 是产生的分隔符,可以为 '',如果省略,将以 , 作为分隔符
    ['type', 'arr', 'abc'].join('|') // type|arr|abc
    

例题

判断给定字符串在不考虑大小写、标点符号和空格时候是否是回文,返回 Boolean

function palindrome (str) {
  const rule = /[^0-9a-zA-Z]/g
  str = str.replace(rule ,'').toLowerCase()
  const reverseStr = str.split('').reverse().join('')
  return str === reverseStr
}

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×