merge: count Vowels (#864)

This commit is contained in:
YATIN KATHURIA
2021-12-11 13:30:26 +05:30
committed by GitHub
parent 4d55b40c9e
commit c30b897324
3 changed files with 48 additions and 44 deletions

View File

@ -1,21 +0,0 @@
/*
Given a string of words or phrases, count the number of vowels.
Example: input = "hello world" return 3
*/
const checkVowels = (value) => {
if (typeof value !== 'string') {
throw new TypeError('The first param should be a string')
}
const vowels = ['a', 'e', 'i', 'o', 'u']
let countVowels = 0
for (let i = 0; i < value.length; i++) {
const char = value[i].toLowerCase()
if (vowels.includes(char)) {
countVowels++
}
}
return countVowels
}
export { checkVowels }

25
String/CountVowels.js Normal file
View File

@ -0,0 +1,25 @@
/**
* @function countVowels
* @description Given a string of words or phrases, count the number of vowels.
* @param {String} url - The input string
* @return {Number} count
* @example countVowels("ABCDE") => 2
* @example countVowels("Hello") => 2
*/
const countVowels = (str) => {
if (typeof str !== 'string') {
throw new TypeError('Input should be a string')
}
const vowels = new Set(['a', 'e', 'i', 'o', 'u'])
let count = 0
for (let i = 0; i < str.length; i++) {
const char = str[i].toLowerCase()
if (vowels.has(char)) {
count++
}
}
return count
}
export { countVowels }

View File

@ -1,67 +1,67 @@
import { checkVowels } from '../CheckVowels'
import { countVowels } from '../CountVowels'
describe('Test the checkVowels function', () => {
describe('CountVowels', () => {
it('expect throws on use wrong param', () => {
expect(() => checkVowels(0)).toThrow()
expect(() => countVowels(0)).toThrow()
})
it('count the vowels in a string', () => {
const value = 'Mad World'
const countVowels = checkVowels(value)
expect(countVowels).toBe(2)
const count = countVowels(value)
expect(count).toBe(2)
})
it('should return 0 when input is a string with no vowels', () => {
const value = 'bcdfgh'
const countVowels = checkVowels(value)
expect(countVowels).toBe(0)
const count = countVowels(value)
expect(count).toBe(0)
})
it('should return 1 when input is a string of length 1 that is a vowel', () => {
const value = 'a'
const countVowels = checkVowels(value)
expect(countVowels).toBe(1)
const count = countVowels(value)
expect(count).toBe(1)
})
it('should return the correct result when input is in all uppercase letters', () => {
const value = 'ABCDE'
const countVowels = checkVowels(value)
expect(countVowels).toBe(2)
const count = countVowels(value)
expect(count).toBe(2)
})
it('should return the correct result when input is in all lowercase letters', () => {
const value = 'abcdefghi'
const countVowels = checkVowels(value)
expect(countVowels).toBe(3)
const count = countVowels(value)
expect(count).toBe(3)
})
it('should return the correct result when input string contains spaces', () => {
const value = 'abc def ghi'
const countVowels = checkVowels(value)
expect(countVowels).toBe(3)
const count = countVowels(value)
expect(count).toBe(3)
})
it('should return the correct result when input contains number characters', () => {
const value = 'a1b2c3'
const countVowels = checkVowels(value)
expect(countVowels).toBe(1)
const count = countVowels(value)
expect(count).toBe(1)
})
it('should return the correct result when input contains punctuation characters', () => {
const value = 'a!b.ce)'
const countVowels = checkVowels(value)
expect(countVowels).toBe(2)
const count = countVowels(value)
expect(count).toBe(2)
})
it('should return 0 when the input is an empty string', () => {
const value = ''
const countVowels = checkVowels(value)
expect(countVowels).toBe(0)
const count = countVowels(value)
expect(count).toBe(0)
})
it('should count multiple occurrences of the same vowel in the input', () => {
const value = 'aaaaa'
const countVowels = checkVowels(value)
expect(countVowels).toBe(5)
const count = countVowels(value)
expect(count).toBe(5)
})
})