飞猪前端笔试题答案 仅跑过用例不保证健壮

// 获取最大不重复子串

function lengthOfLongestSubstring(str) {
   let left = 0
   let right = 1
   let count = str.length ? 1 : 0
   let subStr = str[0] || ""
   while (right < str.length) {
      let subTemp = str.slice(left, right)
      if (~subTemp.indexOf(str[right])) {
         left++
         continue
      } else {
         right++
         subTemp = str.slice(left, right)
         if (subStr.length < subTemp.length) {
            subStr = subTemp
            count = subTemp.length
         }
      }
   }
   return `'${subStr}':${count}`
}

/*
字符串长度 0 和 1,需要单独处理
left左移不会更新最长结果
right右移则有可能影响
*/

console.log(lengthOfLongestSubstring('')) // 返回 '':0 
console.log(lengthOfLongestSubstring('cbca')) // 返回 'bca':3 
console.log(lengthOfLongestSubstring('c')) // 返回 'c':1 
console.log(lengthOfLongestSubstring('bbbbb')) // 返回 'b':1
console.log(lengthOfLongestSubstring('abcdaccbac')) // 返回 'abcd':4

改进版

// 实现对象.获取属性 链式

function fn(obj, str) {
  let props = str.split('.')
  let val = null
  val = props.reduce((acc, item) => {
    return acc[item]
	}, obj)
  return val
}
const obj = {
  a: { 
    b: { 
      c: 'c5', 
      d: 2 
    }
  }
}
console.log(fn(obj, 'a.b.c'))

// js变量比较相等

function isValueEqual(a, b) {
	if(!isObject(a) && !Array.isArray(a)) {
    return a === b
  }
  if (a === b) {
    return true
  }
  let key1s = Object.keys(a)
  let key2s = Object.keys(b)
  if(key1s.length !== key2s.length) {
    return false
  }
  return key1s.every(item => {
    return isValueEqual(a[item], b[item])
  }) 
    
}

function isObject(obj) {
  return typeof obj === 'object' && obj !== null
}


console.log(isValueEqual('3')) // => false
console.log(isValueEqual(null, undefined)) // => false
console.log(isValueEqual(false, undefined)) // => false
console.log(isValueEqual(1, 1)) // => true
console.log(isValueEqual(1, 2)) // => false
console.log(isValueEqual(1, '1')) // => false
console.log(isValueEqual([1,2], [1,2])) // => true
console.log(isValueEqual([1, { a: 1, b: 2 }], [1, { a: 1, b: 2 }])) // => true
console.log(isValueEqual({ a: 1, b: 2 }, { a: 1, b: 2 })) // => true
console.log(isValueEqual({ a: 1, b: 2 }, { a: 1, b: 2, c: 3 })) // => false
console.log(isValueEqual({ a: 1, b: [1, 2] }, { a: 1, b: [1, 2] })) // => true
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Pytest中,可以使用pytest-rerunfailures插件来实现失败用例的重。安装该插件的方式是通过pip install pytest-rerunfailures命令进行安装。安装完成后,可以通过两种方式来实现失败用例的重。 方式一是在命令行或者main()函数中使用pytest.main(\['-vs','test_a.py','--reruns=2'\])命令来执行测试脚本,并通过--reruns参数指定重次数。例如,pytest -vs ./test_a.py --reruns 2 --reruns-delay 2表示失败重试2次,在每次重试前会等待2秒。 方式二是在pytest.ini配置文件中使用。在pytest.ini文件中,可以通过addopts参数来添加--reruns参数,并指定重次数和重间隔时间。例如,\[pytest\] addopts = -s --reruns 2 --reruns-delay 2可以实现失败重试2次,在每次重试前等待2秒。 需要注意的是,使用pytest-rerunfailures插件时,可以在测试用例上使用@pytest.mark.flaky(reruns=3)装饰器来指定重次数。例如,@pytest.mark.flaky(reruns=3) def test01(): assert randint(1, 10) == 6可以实现失败重试3次。 总结起来,要实现pytest命令行重失败用例,可以通过命令行参数或者pytest.ini配置文件来指定重次数和重间隔时间。 #### 引用[.reference_title] - *1* *3* [四、Pytest框架 — pytest.ini文件和用例执行的顺序以及跳过测试和失败重试](https://blog.csdn.net/m0_59868866/article/details/125002374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [pytest系列教程——12、用例执行失败后重](https://blog.csdn.net/bo_mask/article/details/126761257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值