需要:应用js获取aaaabcc4aa4ddcfceeeeeeeggg这个字符串中间断呈现次数最多的字符

形式一:利用指针思维(即索引)

在JavaScript中指针思维就是索引思维。
思路:

  • 首先定义ij两个索引,i指向第一个字符,j指向i前面的字符
  • i不动,j始终向后挪动,而后比拟i与j指向的字符,如果它俩相等则不论,阐明i与j之间的字符是间断的。
  • 如果不相等则阐明i指向的字符的连续性要断开了,此时就要记录这个字符及该字符呈现的次数,并将i等j,j持续向后挪动

图片形容:

代码:

var str = 'aaaabcc4aa4ddcfceeeeeeeggg';function getStrMaxCount1(str){    var resultStr = '';    var resultCount = 0;    var i = 0;    var j = 0;    while(i < str.length){        let strStart = str[i];        // 不相等则阐明 strStart 不再间断了        if(strStart != str[++j]){            let count = j - i;            console.log(`字符:${strStart}呈现了:${count}次!`);            if(count > resultCount){                resultCount = count;                resultStr = strStart;            }            i = j;        }    }    return {        count: resultCount,        str: resultStr    };}// {count: 7, str: 'e'}console.log(getStrMaxCount1(str));

形式二:用数组存储每次循环的字符

思路:

  • 定义一个数组,循环这个字符串,判断以后循环的这个字符与数组中最初一项是否相等
  • 如果相等阐明该字符与数组中后面的字符是间断的,是间断的则将字符存到数组中。
  • 如果不相等,则阐明数组中字符的连续性断了,此时就要记录数组中的字符及该字符呈现的次数。而后清空数组,并进行下一轮循环

代码:

var str = 'aaaabcc4aa4ddcfceeeeeeeggg';function getStrMaxCount2(str){    var tempArr = [];    var resultStr = '';    var resultCount = 0;    var i = 0;    while(i < str.length){        let char = str[i];        if(tempArr.length == 0){            tempArr.push(char);        }else if(char == tempArr[tempArr.length - 1]){            tempArr.push(char);            if(i == str.length - 1){                // 循环完结后也要进行判断                let charInArr = tempArr[0];                let count = tempArr.length;                console.log(`字符:${charInArr}呈现了:${count}次!`);                if(count > resultCount){                    resultCount = count;                    resultStr = charInArr;                }            }        }else{            // 如果 char 不等于长期数组中的最初一项,则前面数组中的字符不再间断了            let charInArr = tempArr[0];            let count = tempArr.length;            console.log(`字符:${charInArr}呈现了:${count}次!`);            if(count > resultCount){                resultCount = count;                resultStr = charInArr;            }            // 清空数组            tempArr.length = 0;            tempArr.push(char);        }        i++;    }    return {        count: resultCount,        str: resultStr    };}// {count: 7, str: 'e'}console.log(getStrMaxCount2(str));