From c30b89732422cfd10460588fde6af88638ad23fa Mon Sep 17 00:00:00 2001 From: YATIN KATHURIA <47096348+Yatin-kathuria@users.noreply.github.com> Date: Sat, 11 Dec 2021 13:30:26 +0530 Subject: [PATCH] merge: count Vowels (#864) --- String/CheckVowels.js | 21 --------- String/CountVowels.js | 25 ++++++++++ ...heckVowels.test.js => CountVowels.test.js} | 46 +++++++++---------- 3 files changed, 48 insertions(+), 44 deletions(-) delete mode 100644 String/CheckVowels.js create mode 100644 String/CountVowels.js rename String/test/{CheckVowels.test.js => CountVowels.test.js} (56%) diff --git a/String/CheckVowels.js b/String/CheckVowels.js deleted file mode 100644 index d362d82bc..000000000 --- a/String/CheckVowels.js +++ /dev/null @@ -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 } diff --git a/String/CountVowels.js b/String/CountVowels.js new file mode 100644 index 000000000..9772c28f0 --- /dev/null +++ b/String/CountVowels.js @@ -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 } diff --git a/String/test/CheckVowels.test.js b/String/test/CountVowels.test.js similarity index 56% rename from String/test/CheckVowels.test.js rename to String/test/CountVowels.test.js index e46cd7de1..b05d60e14 100644 --- a/String/test/CheckVowels.test.js +++ b/String/test/CountVowels.test.js @@ -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) }) })