Percentage Of Letters

/**
 * @function percentageOfLetter
 * @description Return the percentage of characters in 'str'
 * that equal 'letter' rounded down to the nearest whole percent.
 * More info: https://leetcode.com/problems/percentage-of-letter-in-string/
 * @param {String} str
 * @param {String} letter
 * @returns {Number}
 * @example
 * const str = 'foobar', const letter = 'o'
 * percentageOfLetter(str, letter) // ===> 33
 */
const percentageOfLetter = (str, letter) => {
  if (typeof str !== 'string' || typeof letter !== 'string') {
    throw new Error('Input data must be strings')
  }
  let letterCount = 0
  // Iterate through the whole given text
  for (let i = 0; i < str.length; i++) {
    // Count how often the letter appears in the word
    letterCount += str[i].toLowerCase() === letter.toLowerCase() ? 1 : 0
  }
  const percentage = Math.floor((100 * letterCount) / str.length)
  return percentage
}

export { percentageOfLetter }