From a9a5123d48bcbe82f2241fe1d6903645c801ccc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Olvera=20Vital?= Date: Sat, 9 May 2020 17:46:35 -0500 Subject: [PATCH] [Add] I change the constructor of Deque, now it accept a iterable. Challege solved --- src/challenge.js | 22 +++++++++++++++++++--- src/deque.js | 12 +++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/challenge.js b/src/challenge.js index f91816b..fbd36d3 100644 --- a/src/challenge.js +++ b/src/challenge.js @@ -1,10 +1,26 @@ -const { Deque } = require ('./deque.js'); +const { Deque } = require('./deque.js'); +/** + * + * @param {string} text + * @returns {boolean} + */ function palindromeChecker(text) { + if (!text) return false; + + const dequeText = new Deque( + text.replace(/ /g, '').toLowerCase() + ); - // your code + while (!dequeText.isEmpty()) { + if (dequeText.peekBack() !== dequeText.peekFront()) { + return false; + } + dequeText.removeBack(); + dequeText.removeFront(); + } - return; + return true; } module.exports = { palindromeChecker }; \ No newline at end of file diff --git a/src/deque.js b/src/deque.js index 7bcd585..f40471a 100644 --- a/src/deque.js +++ b/src/deque.js @@ -1,9 +1,19 @@ class Deque { - constructor() { + constructor(iterable=undefined) { this.count = 0; this.topCount = 0; this.items = {}; + + if (iterable) { + const iterator = iterable[Symbol.iterator](); + let element = iterator.next(); + while(!element.done) { + this.addBack(element.value); + element = iterator.next(); + } + + } } addFront(element) {