由于题目中没有说明大小写问题,此时要考虑同一个字符的大小写问题。对于大小写的处理方法:将字符串的所有字符转换成小写的,在比较的时候比较的是转换后的小写字符串,但是在添加当前相等字符的时候添加的还是原来字符串中的字符。

每一次遍历时计算同一个字符的持续长度和当前该字符的字符串,当该字符结束连续后将该字符此时的持续长度与全局持续长度进行比较。若比全局大则更新全局持续长度和全局字符串。最后返回全局字符串。

代码如下:

function findLongestSubstr(str) {
  // write code here
  if(str === ""){
      return str;
  }

  // 将所有字符转换成小写的
  let str1 = str.toLowerCase();
  let lens = 1;
  let start = 0;
  let current = str[0];
  let res = str[0];
  for(let i=1; i<str.length;){
    while(str1[i] === str1[i-1]){
        current = current + str[i];
        i++;
    }
    if(i - start > lens){
        // 如果当前同一个字符的持续长度是最长的
        lens = i - start;
        res = current;
    }
    start = i;
    i++;
    current = str[i];
  }

  return res;
}