javascript - 如何求最长子串的长度?

标签 javascript

需要找到由相同字母组成的最长子串的长度。例如,行“aaabbcaaaa”包含四个具有相同字母“aaa”、“bb”、“c”和“aaaa”的子字符串。

我找到了两种方法来做到这一点,但都不太好;

首先,我不在这里检查之前的类似字母sdsffffse; 因为我只检查当前元素和第二个元素if(line[i] === line[i+1])

在第二种方式中,当我尝试检查在该字符串 abababaab 中找到了多少 aa 时,我失败了,但在对象中我添加了所有 a字母和长度 = 5;

function longRepeat(line) {
    let count = {};
  	let letter = [];
  for (let i=0; i<line.length; i++) {
  	count[line[i]] = i;
    if(line[i] === line[i+1]){
          letter.push([line[i], line[i+1]])
    }
  }

  
/*
second way
for (let x of line) {
    count[x] = ~~count[x] + 1;
 } */
  
  return letter;
}

console.log(longRepeat('sdsffffse')); f = 4
console.log(longRepeat('ddvvrwwwrggg')); = 3
console.log(longRepeat('abababaab')); // last two a = 2

最佳答案

可能的解决方案:

function longestSubstr(str) {
  if (!str) return 0
  let maxL = 1
  let curL = 1
  for (let i = 0; i < str.length - 1; i++) {
    let cur = str[i]
    let next = str[i + 1]
    if (cur === next) {
      curL++
    } else {
      if (maxL < curL) maxL = curL
      curL = 1
    }
  }
  if (maxL < curL) maxL = curL
  return maxL
}

console.log(longestSubstr("abababaab")) // 2

关于javascript - 如何求最长子串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52955281/

相关文章:

javascript - 当计时器达到特定数字时 react 振动手机

javascript - 使用过渡更改 Canvas 上的图像

javascript - 可以将 promise 添加到数组并基于单个操作解决它们吗?

javascript - 如何防止谷歌浏览器缓存我的输入,尤其是当用户点击返回时隐藏的输入?

javascript - 如何使用 jquery-footable 创建过滤器下拉列表?

javascript - MVC3应用程序和javascripts问题

javascript - 使用对象计算变化 - javascript

javascript - Angular JS 和 TypeScript - 错误 : ng:areq Bad Argument "Argument ' XXXXXX' is not a function, 未定义”

javascript - 我如何在create js中更改图形的填充颜色

javascript - 单击按钮时加减 TR (ID +1)