背景:
今天刷面试题的时候,遇到一个问题——如何判断一段字符串里面出现最多的字符以及出现次数。
思路
- 利用javascript对象的属性特征,可以实现每个字符与出现次数的绑定
- 通过遍历和累加,计算得出每个字符出现的次数
- 通过对比出现的次数,返回出现次数最多的字符
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
32
33
34
35
36
37const str = 'asddfgdfwwqeweqwezczxcsdfgdgd';
var obj = {};
var max = 0;
var maxStr = "";
for(let i = 0; i < str.length ; i++){
var word = str.charAt(i);
if(obj[word] != null){
obj[word]++;
}else{
obj[word] = 1
}
for(let i in obj){
if(obj[i]>max){
max = obj[i];
maxStr = i
}
}
}
console.log('出现最多次:' + max +'的字符是:'+ maxStr)
console.log(obj);
// {a: 1, s: 2, d: 6, f: 3, g: 3, …}
// a: 1
// c: 2
// d: 6
// e: 3
// f: 3
// g: 3
// q: 2
// s: 2
// w: 4
// x: 1
// z: 2
// __proto__: Object