1.基于对象的实现思路
const getMaxCount1 = (str) => {
let json = {};
for (let i = 0; i < str.length; i++) {
if (!json[str.charAt(i)]) {
json[str.charAt(i)] = 1;
} else {
json[str.charAt(i)]++;
}
}
let maxCountChar = "";
let maxCount = 0;
for (const key in json) {
if (json[key] > maxCount) {
maxCount = json[key];
maxCountChar = key;
}
}
return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};
2.基于排序和lastIndexOf方法的实现思路
const getMaxCount2 = (str) => {
let maxCountChar = "";
let maxCount = 0;
str = str.split("").sort().join("");
for (let i = 0, j = str.length; i < j; i++) {
let char = str.charAt(i);
let charCount = str.lastIndexOf(char) - i + 1;
if (charCount > maxCount) {
maxCount = charCount;
maxCountChar = char;
}
i = str.lastIndexOf(char);
}
return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};
3.基于正则表达式的实现思路
const getMaxCount3 = (str) => {
let maxCountChar = "";
let maxCount = 0;
str = str.split("").sort().join("");
let arr = str.match(/(\w)\1+/g);
for (let i = 0; i < arr.length; i++) {
let length = arr[i].length;
if (length > maxCount) {
maxCount = length;
maxCountChar = arr[i][0];
}
}
return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};
4.基于replace方法的实现思路
const getMaxCount4 = (str) => {
let maxCountChar = "";
let maxCount = 0;
while (str) {
let length = str.length;
let char = str.charAt(0);
let reg = new RegExp(char, "g");
str = str.replace(reg, "");
let restLength = str.length;
let charCount = length - restLength;
if (charCount > maxCount) {
maxCount = charCount;
maxCountChar = char;
}
}
return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};
通过以上四种不同的实现思路,我们可以得到字符串中出现次数最多的字符和出现的次数。根据实际需求和场景的不同,可以选择合适的方法来进行实现。