mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-07 02:05:08 +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', () => {
|
it('expect throws on use wrong param', () => {
|
||||||
expect(() => checkVowels(0)).toThrow()
|
expect(() => countVowels(0)).toThrow()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('count the vowels in a string', () => {
|
it('count the vowels in a string', () => {
|
||||||
const value = 'Mad World'
|
const value = 'Mad World'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(2)
|
expect(count).toBe(2)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return 0 when input is a string with no vowels', () => {
|
it('should return 0 when input is a string with no vowels', () => {
|
||||||
const value = 'bcdfgh'
|
const value = 'bcdfgh'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(0)
|
expect(count).toBe(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return 1 when input is a string of length 1 that is a vowel', () => {
|
it('should return 1 when input is a string of length 1 that is a vowel', () => {
|
||||||
const value = 'a'
|
const value = 'a'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(1)
|
expect(count).toBe(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return the correct result when input is in all uppercase letters', () => {
|
it('should return the correct result when input is in all uppercase letters', () => {
|
||||||
const value = 'ABCDE'
|
const value = 'ABCDE'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(2)
|
expect(count).toBe(2)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return the correct result when input is in all lowercase letters', () => {
|
it('should return the correct result when input is in all lowercase letters', () => {
|
||||||
const value = 'abcdefghi'
|
const value = 'abcdefghi'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(3)
|
expect(count).toBe(3)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return the correct result when input string contains spaces', () => {
|
it('should return the correct result when input string contains spaces', () => {
|
||||||
const value = 'abc def ghi'
|
const value = 'abc def ghi'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(3)
|
expect(count).toBe(3)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return the correct result when input contains number characters', () => {
|
it('should return the correct result when input contains number characters', () => {
|
||||||
const value = 'a1b2c3'
|
const value = 'a1b2c3'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(1)
|
expect(count).toBe(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return the correct result when input contains punctuation characters', () => {
|
it('should return the correct result when input contains punctuation characters', () => {
|
||||||
const value = 'a!b.ce)'
|
const value = 'a!b.ce)'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(2)
|
expect(count).toBe(2)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should return 0 when the input is an empty string', () => {
|
it('should return 0 when the input is an empty string', () => {
|
||||||
const value = ''
|
const value = ''
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(0)
|
expect(count).toBe(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should count multiple occurrences of the same vowel in the input', () => {
|
it('should count multiple occurrences of the same vowel in the input', () => {
|
||||||
const value = 'aaaaa'
|
const value = 'aaaaa'
|
||||||
const countVowels = checkVowels(value)
|
const count = countVowels(value)
|
||||||
expect(countVowels).toBe(5)
|
expect(count).toBe(5)
|
||||||
})
|
})
|
||||||
})
|
})
|
Reference in New Issue
Block a user