前端基础算法面试题,一个字符串中,出现最多的字符以及出现的次数。
1.首先对字符串转换成字符串数组,然后对字符串数组进行排序,得到一个有序的数组
2.然后对排序后的字符串数组,进行查找
3.每次找到字符出现的最后的位置,然后进行计数
4.得到最终结果
function getMaxCount(str) {
if (!str) return "";
let maxCount = 0,
maxCountStr = "";
str = [...str].sort().join("");
for (let i = 0; i < str.length; i++) {
let idx = str.lastIndexOf(str[i]);
if (maxCount < idx - i + 1) {
maxCount = idx - i + 1;
maxCountStr = str[i];
}
i = idx;
}
return `最多的字符:${maxCountStr}, 次数:${maxCount}`;
}
方法2:
1.通过Object对象记录每个字符串出现的次数
2.通过记录的Object对象进行比对,得到最大值以及最多的字符串
3.获取结果,实现方式如下:
function getMaxStr2(str) {
if (!str) return "";
let maxCount = 0,
maxCountStr = "",
res = {};
for (let i = 0; i < str.length; i++) {
if (res[str[i]]) {
res[str[i]] = res[str[i]] + 1;
} else {
res[str[i]] = 1;
}
}
for (let i in res) {
if (res[i] > maxCount) {
maxCount = res[i];
maxCountStr = i;
}
}
return `最多的字符:${maxCountStr}, 次数:${maxCount}`;
}