面试中常遇到的一题,查找当前字符串中出现最多的字符,以及次数。下面介绍两种方法:
// 方法一:使用对象
/**
* 1.遍历字符串,把字符作为对象的key,重复次数为value, 存入对象;
* 2.遍历对象,根据获得的最大 value 值,获取到对应的字符串 key;
* 3.输出结果
*/
function maxStr(str){
let obj = {};
let maxNum = 0;
let maxStr = ''
for (let i = 0; i < str.length; i++) {
if (obj[str[i]]) {
obj[str[i]] +=1
}else{
obj[str[i]] = 1;
}
}
for (const key in obj) {
if (obj[key] > maxNum) {
maxNum = obj[key]
maxStr = key
}
}
console.log(`出现最多次字符是${maxStr},次数是${maxNum}`)
}
// 方法二:使用数组&指针
- 1.将字符串转为数组并排序,使重复字符排在一起;
- 2.使用指针思想,获得最大重复数和对应的字符数组
- 3.输出结果
function arrMaxStr(str){
const arr = str.split('').sort()
let startIndex = 0;
let endIndex = 1;
let maxNum = 0;
let strArr = [];
while(endIndex < arr.length){
if (arr[startIndex] !== arr[endIndex]) {
const rangeNum = endIndex - startIndex
if (rangeNum > maxNum) {
maxNum = rangeNum
strArr = [arr[startIndex]]
}else if(rangeNum === maxNum){
strArr.push(arr[startIndex])
}
startIndex = endIndex
}
endIndex++
}
console.log(`出现最多次字符是${maxStr.join('')},次数是${maxNum}`);
}
欢迎指正!