mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 08:16:50 +08:00
merge: count Vowels (#864)
This commit is contained in:
@ -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
25
String/CountVowels.js
Normal 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 }
|
@ -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)
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user