提交leetcode时的问题

来源:2-5 计算子串代码演示

慕粉1461916001

2019-02-14

图片描述

应该是长度超过正则的极限了
然后我用startsWith方法代替正则,成功通过了测试,但是速度非常慢,想问下老师还有别的更好的解决方案么图片描述
图片描述

写回答

4回答

AqingCyan

2019-02-16

export default (s) => {
  let result = 0
  // curLen 与 preLen 分别记录当前数字出现次数与前半部分数字出现次数,curLen小于等于prLen则符合条件
  let curLen = 1
  let preLen = 0
  for (let i = 0; i < s.length - 1; i++) {
    // 指针往后移动,若当前数字与下一个数字一样则将curLen加1
    if (s[i] === s[i + 1]) {
      curLen += 1
    } else {
      // 否则就是遇到了不同之处,把相同子串的长度交给preLen,curLen再重新往后寻找
      preLen = curLen
      curLen = 1
    }
    if (preLen >= curLen) {
      result += 1
    }
  }
  return result
}

这是另一个方法,代码的执行效率高了一些。

//img.mukewang.com/szimg/5c67bcc5000124c413420476.jpg

6
3
fluff
这个厉害
2019-05-31
共3条回复

qq_行不更名坐不改姓我叫_0

2019-11-01

老师的算法可以用来练一练算法的解题思路,但是要说效率的话肯定还是leetcode上的解法更优

0
0

追风筝的人or

2019-07-03

这个老师没给解决吗?

0
0

慕斯卡7269444

2019-02-14

和你差不多,很慢。感觉match和slice两个API会比较慢而且比较耗内存

//img.mukewang.com/szimg/5c6533b2000138ce22000728.jpg


0
0

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程