mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2026-03-13 15:21:15 +08:00
algorithm: count letters (#1164)
This commit is contained in:
33
String/CountLetters.js
Normal file
33
String/CountLetters.js
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* @function countLetters
|
||||
* @description Given a string, count the number of each letter.
|
||||
* @param {String} str - The input string
|
||||
* @return {Object} - Object with letters and number of times
|
||||
* @example countLetters("hello") => {h: 1, e: 1, l: 2, o: 1}
|
||||
*/
|
||||
|
||||
const countLetters = (str) => {
|
||||
const specialChars = /\W/g
|
||||
|
||||
if (typeof str !== 'string') {
|
||||
throw new TypeError('Input should be a string')
|
||||
}
|
||||
|
||||
if (specialChars.test(str)) {
|
||||
throw new TypeError('Input must not contain special characters')
|
||||
}
|
||||
|
||||
if (/\d/.test(str)) {
|
||||
throw new TypeError('Input must not contain numbers')
|
||||
}
|
||||
|
||||
const obj = {}
|
||||
for (let i = 0; i < str.toLowerCase().length; i++) {
|
||||
const char = str.toLowerCase().charAt(i)
|
||||
obj[char] = (obj[char] || 0) + 1
|
||||
}
|
||||
|
||||
return obj
|
||||
}
|
||||
|
||||
export { countLetters }
|
||||
Reference in New Issue
Block a user