JavaScript算法--二进制子串和字符串反转

第一题难理解,请看下一张详细图解:

从标红的地方看是有规律的

js算法代码:

const getResult = (str) => {
  let r = []
  const match = (str) => {
    let j = str.match(/^(0+|1+)/)[0].toString()
    // ^=>“^”运算符(位异或)用于对两个二进制操作数逐位进行比较返回结果
    let o = (j[0] ^ 1).toString().repeat(j.length)
    let reg = new RegExp(`^(${j}${o})`)
    if (reg.test(str)) {
      return RegExp.$1
    }else {
      return ''
    }
    
  }
  for(let i = 0;i

第二题是简单的字符串倒转,注意空格是也要和之前的一致



const reverseStr = (str) => {
  return str.match(/^([\w']*\s?\w+)+$/).map(ee=>(ee.split('').reverse().join('')))[0]
}
// 或者
/*
const reverseStr = (str) => {
  return (/^[\w']*(\s?\w+)+$/).exec(str).map(ee=>(ee.split('').reverse().join('')))[0]
}
*/
const str1 = 'a\'s bf cf df'
console.log(reverseStr(str1))//fd fc fb s'a

const reverseStr2 = (str) => {
  return str.split(/\s/).reverse().map(ee=>(ee.split('').reverse().join(''))).join(' ')
}
const str2 = 'a\'s bf cf df'
console.log(reverseStr2(str2))//fd fc fb s'a

 

你可能感兴趣的:(JavaScript面试问题,算法)