出现次数最多的字符

  1. 问题:给定一个字符串,求出里面出现次数最多的字符。
  2. 输入:字符串
  3. 输出:{[字符]:[出现次数],…}
  4. 举例:输入:'hello world' 输出:{'l':3}

方法1:

先排序,然后单次遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function getMostAppear(str){
if(str.length === 0) return {};
var sortedArr = str.split('').sort(function(a, b){
return a - b;
});
var len = sortedArr.length;

// 用来记录最多的次数
var max = 0;

// 用来记录出现最多次数的字符
var c = '';

// 用来记录当前字符和次数的映射
var currAppear = {};
for(var i = 0; i < len; i++){
var currChar = sortedArr[i];
if(!currAppear[currChar]){
currAppear[currChar] = 1;
}else{
currAppear[currChar]++;
}
if(currAppear[currChar] > max){
max = currAppear[currChar];
c = currChar;
}
}
var mostAppear = {};
mostAppear[c] = max;
return mostAppear;
}

方法2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function getMostAppear(str){
if(str.length === 0) return {};
var len = str.length;

// 用来记录最多的次数
var max = 0;

// 用来记录出现最多次数的字符
var c = '';

// 字符和出现次数的映射
var charNumMap = {};

for(var i = 0; i < len; i++){
var curr = str.charAt(i);
if(!charNumMap[curr]){
charNumMap[curr] = 1;
}else{
charNumMap[curr]++;
}

if(charNumMap[curr] > max){
max = charNumMap[curr];
c = curr;
}
}

var mostAppear = {};
mostAppear[c] = max;
return mostAppear;
}
评论