forked from TheAlgorithms/JavaScript
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMaxCharacter.js
More file actions
Latest commit
37 lines (31 loc) · 1.01 KB
/
Copy pathMaxCharacter.js
File metadata and controls
37 lines (31 loc) · 1.01 KB
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
37
/**
* @function maxCharacter
* @example - Given a string of characters, return the character that appears the most often. Example: input = "Hello World!" return "l"
* @param {string} str
* @param {RegExp} ignorePattern - ignore the char in str that is not required
* @returns {string} - char
*/
constmaxCharacter=(str,ignorePattern)=>{
// initially it's count only alphabets
if(typeofstr!=='string'){
thrownewTypeError('Argument should be a string')
}elseif(!str){
thrownewError('The param should be a nonempty string')
}
// store all char in occurrence map
constoccurrenceMap=newMap()
for(constcharofstr){
if(!ignorePattern?.test(char)){
occurrenceMap.set(char,occurrenceMap.get(char)+1||1)
}
}
// find the max char from the occurrence map
letmax={char: '',occur: -Infinity}
for(const[char,occur]ofoccurrenceMap){
if(occur>max.occur){
max={ char, occur }
}
}
returnmax.char
}
exportdefaultmaxCharacter